在工作中可能遇到这样的情况,随着业务的增长,用户量也在逐渐增长,终究有一天,一到高峰期,数据库服务器CPU利用率直飚100%。
最简单的做法就是直接提升硬件性能,简单粗暴,直接有效。
假如我们最开始的服务器CPU核数是4,然后我们觉得4个有点扛不住,那就直接给他搞16个核。这下应该没啥问题了吧,用户访问站点貌似也比以前快了。但是不要高兴太早,当你打开任务管理器,你会发现利用率高的还是以前那几个核,或者说只有4个用的比较多,其它12位大爷感觉不接茬。
如果你去查一下innodb_read_io_threads和innodb_write_io_threads这两个变量的时候,你就回发现,它们的默认值是4。可以用以下语句查看这两个变量的值:
show variables like '%_io_threads'
1
那就往大放呗。如果你直接用set命令去修改,你就回发现,人家会告你这俩命令是只读变量。那好吧,只能在初始化文件中添加这两个变量了。找到mysql的安装目录,用管理员身份打开mysql.ini文件,在最后添加这么两句:
innodb_read_io_threads=16
innodb_read_write_threads=16
1
2
重启MySQL服务,再去观察一下任务管理器,你就会发现,这次任务分配到每个处理器的任务量就均匀了些。