我注意到服务器性能下降(页面加载速度变慢),然后我去调查,在 munin graphs(跟踪服务器资源)中发现磁盘 IOPS、磁盘延迟、MySQL 查询数量发生了很大变化。这是我没有对系统或服务器上运行的程序/网站代码进行任何更改的情况下发生的。
这是什么意思?是什么引发了这些变化?如何解决?
有关问题的更多信息:顺序按 munin 图表顺序排列。资源(与之前的监控相比,时间大约发生变化);
- 每个设备的磁盘 IO(增加 x10);
- 平均请求大小(减少 x2-4);
- 每个设备的磁盘延迟(平均写入 IO 等待时间减少 10 倍);
- MySQL 查询(减少了 x2);
- CPU 使用率(增加了 1.5 倍);
- 中断和上下文切换(增加 x10)。
提前感谢您解决这个问题。
答案1
我一直在努力寻找答案,终于找到了答案。
解决方案是将 my.cnf 中的 MySQL tmpdir 参数从 /tmp/(分配在磁盘上)更改为 /dev/shm(在 RAM 上)
因为所有临时表中的 48.7% [Created_tmp_disk_tables / (Created_tmp_tables + Created_tmp_disk_tables) * 100] 都被写入磁盘,并且当在磁盘上分配 tmpdir 时,IOPS 就会增加。