我有一台Linux服务器,用于运行我的应用程序(MySql)的数据库,服务器有8GB RAM和4个内核。 除MySql之外,服务器上没有其他应用程序正在运行。
大多数情况下,服务器磁盘I / O利用率大约为90-100%。
这是一些额外的信息:
Uptime: 2387312 Threads: 29 Questions: 344977869 Slow queries: 3380301 Opens: 200483225 Flush tables: 1 Open tables: 9 Queries per second avg: 144.504
数据库的大小约70GB,如果我不得不定义查询types,我会说60%是普通查询,其余更复杂(join几个表等)
根据Linode(托pipe服务器的位置),我使用New Relic来获取I / O利用率,服务器上的平均I / O为:每秒10780个块的IO速率
这是正常的吗?
“慢查询”的数量有点高。 磁盘负载似乎也指示全表扫描。 我的感觉是,你的数据库缺less经常使用的查询的一些指标。 仔细查看查询 – 它们是否来自索引表的select值?
一个纯粹的猜测:也许你的服务器正在生成大量临时表到磁盘? SHOW GLOBAL STATUS LIKE '%tmp%'; 返回与tmp表相比创build的大量磁盘表?
如果是这样,分析查询和/或考虑提高tmp_table_size值,如果你的服务器有空间呼吸记忆明智。
大部分时间服务器磁盘I / O利用率大约是90-100%
那么你的服务器是I / O绑定的。
通常的解决scheme是添加更多的磁盘I / O容量(=主轴)。