我有一台 RH 服务器作为 VMWare 实例,全天候记录 GPS 定位。几个月来交易量没有变化(事实上,我现在正在更积极地修剪交易表),给定时间只有 600k 到 800k 条记录。没有运行任何临时类型的查询,所以我知道他们正在向客户端返回少量记录,并且我知道他们正在使用索引。
该系统已经运行了好几年,但最近几周,每周有几天 I/O 突然激增至 +50%。通常为空的“show processlist”现在显示 10 到 100 个插入请求刚刚备份并标记为“已锁定”。同样神奇的是,问题自行解决,并且运行了几天,I/O 等待时间 < 1%!
事务组合是固定的,每天有相同数量的设备访问服务器。客户端服务器的自动查询会重复发出定期请求。重点是,从客户端的角度来看,无论好日子还是坏日子,一切都大致相同。此外,这就是该服务器所做的一切,将少量 cgi-perl 脚本作为 Web 服务与单个 mysql 数据库进行对接。
我的想法是:
- Mysql 表损坏。我删除并重建了表几次,甚至将其从 myisam 更改为 innodb 并改回。这没有效果。无论如何,我认为如果它是损坏的,它不会自行修复。
- 硬件组件出现故障,我的 IT 人员被调离了,我甚至无法控制 VMware 实例,因此无法真正调试它。同样,我无法想象这种情况会一次又一次地自行修复。
- 其他虚拟机正在压缩我的磁盘性能。这似乎是最合理的,因为它只是时有时无。
除了 sar -u 和 iostat 报告高 I/O 等待以及“show processlist”显示大量待处理的锁定插入之外,我找不到任何东西。机器似乎没有交换、内存不足等......但我不是 Linux 管理专家,所以谁知道呢。有人能给我一些想法来帮助我识别问题吗?
示例 sar -b(这些数字太疯狂了):
12:00:01 AM tps rtps wtps bread/s bwrtn/s
...
09:40:01 AM 75.12 1.70 73.42 13.76 1124.27
09:50:01 AM 67.78 1.09 66.69 10.75 955.04
10:00:01 AM 86.89 2.62 84.27 21.58 1334.50
10:10:01 AM 75.80 1.61 74.18 13.48 1097.77
10:20:01 AM 76.28 3.52 72.76 44.01 1055.92
10:30:02 AM 768.84 697.78 71.06 81332.71 1135.01
10:40:01 AM 72.28 2.94 69.34 61.10 1005.24
10:50:01 AM 74.80 1.34 73.46 11.36 1097.11
11:00:01 AM 67.03 1.37 65.67 11.00 924.50
11:10:01 AM 71.03 1.33 69.70 14.28 1009.19
11:20:01 AM 522.77 449.29 73.48 34524.92 1118.53
11:30:01 AM 72.06 1.61 70.45 13.01 1049.04
11:40:01 AM 73.14 1.56 71.57 12.99 1057.92
11:50:01 AM 63.44 1.07 62.37 8.68 863.00
12:00:01 PM 67.55 4.11 63.45 276.15 892.03
12:10:02 PM 856.48 792.62 63.85 101373.82 961.37 (holy cow!!!)
12:20:02 PM 1371.08 1299.65 71.42 162681.77 1160.73
12:30:02 PM 851.58 779.06 72.52 107906.82 1110.43
12:40:01 PM 849.75 778.53 71.22 103911.38 1115.13
12:50:01 PM 1793.71 1731.71 62.00 226925.63 1009.08
01:00:02 PM 1203.30 1145.78 57.52 142471.68 859.83
01:10:02 PM 1706.96 1647.98 58.98 213324.29 967.99
01:20:02 PM 1651.73 1596.54 55.19 208766.31 829.68
01:30:02 PM 1836.17 1775.53 60.63 232770.33 973.96
01:40:01 PM 1732.33 1681.82 50.51 219729.38 756.62
01:50:02 PM 1882.88 1829.40 53.48 233177.18 827.11
02:00:02 PM 2022.84 1966.71 56.13 253613.95 921.93
02:10:01 PM 1729.27 1677.31 51.97 204670.95 780.73
02:20:02 PM 1524.93 1464.76 60.17 180919.64 879.26
02:30:02 PM 1850.70 1801.40 49.29 226053.30 764.31
02:40:02 PM 1675.71 1620.18 55.53 197387.47 864.52
02:50:01 PM 1990.15 1934.81 55.33 254025.79 874.29
03:00:01 PM 1953.20 1895.80 57.40 241587.35 933.04
03:10:04 PM 907.08 877.11 29.97 86874.50 514.17
03:20:01 PM 2603.69 2555.15 48.54 273595.88 820.13
03:30:02 PM 2146.49 2101.18 45.31 282196.66 721.60
03:40:04 PM 1941.32 1895.61 45.71 222215.27 763.69
03:50:03 PM 2196.20 2152.56 43.64 250260.12 699.71
典型的 IOSTAT:
avg-cpu: %user %nice %system %iowait %steal %idle
41.50 0.00 4.50 41.50 0.00 12.50
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util
sda 312.00 0.00 508.00 2.00 46.83 0.01 188.09 4.36 8.49 1.96 100.20
sda1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sda2 312.00 0.00 508.00 2.00 46.83 0.01 188.09 4.36 8.49 1.96 100.20
dm-0 0.00 0.00 826.00 2.00 46.92 0.01 116.08 7.66 9.22 1.21 100.20
dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Device: rMB_nor/s wMB_nor/s rMB_dir/s wMB_dir/s rMB_svr/s wMB_svr/s ops/s rops/s wops/s
avg-cpu: %user %nice %system %iowait %steal %idle
16.00 0.00 4.00 42.50 0.00 37.50
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util
sda 277.00 0.00 534.00 0.00 50.07 0.00 192.01 4.07 7.70 1.87 100.00
sda1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sda2 277.00 0.00 534.00 0.00 50.07 0.00 192.01 4.07 7.70 1.87 100.00
dm-0 0.00 0.00 802.00 0.00 49.86 0.00 127.33 6.27 7.85 1.25 100.00
dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Device: rMB_nor/s wMB_nor/s rMB_dir/s wMB_dir/s rMB_svr/s wMB_svr/s ops/s rops/s wops/s
典型 SAR -U:
01:01:39 PM CPU %user %nice %system %iowait %steal %idle
01:01:40 PM all 3.50 0.00 3.50 45.50 0.00 47.50
01:01:41 PM all 9.05 0.00 3.52 46.73 0.00 40.70
01:01:42 PM all 6.97 0.00 2.49 46.27 0.00 44.28
01:01:43 PM all 22.50 0.00 3.50 46.00 0.00 28.00
01:01:44 PM all 6.03 0.00 1.51 49.25 0.00 43.22
典型顶部:
top - 13:03:05 up 4 days, 20:52, 1 user, load average: 5.04, 3.46, 2.97
Tasks: 280 total, 1 running, 278 sleeping, 0 stopped, 1 zombie
Cpu(s): 11.2%us, 4.2%sy, 0.0%ni, 38.2%id, 46.2%wa, 0.2%hi, 0.2%si, 0.0%st
Mem: 4043732k total, 4019444k used, 24288k free, 4348k buffers
Swap: 6094840k total, 84k used, 6094756k free, 3048008k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3617 mysql 15 0 403m 119m 4184 S 6.7 3.0 290:25.53 mysqld
典型的 IOTOP(这很疯狂吧?):
Total DISK READ: 61.55 M/s | Total DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
14375 be/4 mysql 5.41 M/s 0.00 B/s 98.17 % 99.99 % mysqld --basedir=/usr --datadir=/va~g --socket=/var/lib/mysql/mysql.sock
14543 be/4 mysql 3.35 M/s 0.00 B/s 89.86 % 99.99 % mysqld --basedir=/usr --datadir=/va~g --socket=/var/lib/mysql/mysql.sock
14615 be/4 mysql 4.57 M/s 0.00 B/s 99.99 % 99.99 % mysqld --basedir=/usr --datadir=/va~g --socket=/var/lib/mysql/mysql.sock
14613 be/4 mysql 3.79 M/s 0.00 B/s 99.99 % 99.99 % mysqld --basedir=/usr --datadir=/va~g --socket=/var/lib/mysql/mysql.sock
14306 be/4 mysql 2.53 M/s 0.00 B/s 99.99 % 99.99 % mysqld --basedir=/usr --datadir=/va~g --socket=/var/lib/mysql/mysql.sock
14283 be/4 mysql 2.88 M/s 0.00 B/s 0.00 % 99.99 % mysqld --basedir=/usr --datadir=/va~g --socket=/var/lib/mysql/mysql.sock
14310 be/4 mysql 3.76 M/s 0.00 B/s 98.96 % 99.99 % mysqld --basedir=/usr --datadir=/va~g --socket=/var/lib/mysql/mysql.sock
14298 be/4 mysql 5.16 M/s 0.00 B/s 0.00 % 99.99 % mysqld --basedir=/usr --datadir=/va~g --socket=/var/lib/mysql/mysql.sock
14532 be/4 mysql 3.31 M/s 0.00 B/s 98.97 % 99.99 % mysqld --basedir=/usr --datadir=/va~g --socket=/var/lib/mysql/mysql.sock
14573 be/4 mysql 4.90 M/s 0.00 B/s 51.72 % 99.99 % mysqld --basedir=/usr --datadir=/va~g --socket=/var/lib/mysql/mysql.sock
14389 be/4 mysql 114.30 K/s 0.00 B/s 0.00 % 99.99 % mysqld --basedir=/usr --datadir=/va~g --socket=/var/lib/mysql/mysql.sock
14575 be/4 mysql 3.44 M/s 0.00 B/s 3.62 % 99.99 % mysqld --basedir=/usr --datadir=/va~g --socket=/var/lib/mysql/mysql.sock
14583 be/4 mysql 4.71 M/s 0.00 B/s 99.99 % 99.99 % mysqld --basedir=/usr --datadir=/va~g --socket=/var/lib/mysql/mysql.sock
14471 be/4 mysql 4.33 M/s 0.00 B/s 99.99 % 98.97 % mysqld --basedir=/usr --datadir=/va~g --socket=/var/lib/mysql/mysql.sock
14302 be/4 mysql 3.48 M/s 0.00 B/s 0.19 % 98.96 % mysqld --basedir=/usr --datadir=/va~g --socket=/var/lib/mysql/mysql.sock
14527 be/4 mysql 2.52 M/s 0.00 B/s 3.24 % 98.28 % mysqld --basedir=/usr --datadir=/va~g --socket=/var/lib/mysql/mysql.sock
14344 be/4 mysql 807.69 K/s 0.00 B/s 0.29 % 98.17 % mysqld --basedir=/usr --datadir=/va~g --socket=/var/lib/mysql/mysql.sock
14561 be/4 mysql 45.72 K/s 0.00 B/s 99.99 % 51.72 % mysqld --basedir=/usr --datadir=/va~g --socket=/var/lib/mysql/mysql.sock
14565 be/4 mysql 0.00 B/s 0.00 B/s 99.99 % 3.62 % mysqld --basedir=/usr --datadir=/va~g --socket=/var/lib/mysql/mysql.sock
14441 be/4 mysql 0.00 B/s 0.00 B/s 99.99 % 3.24 % mysqld --basedir=/usr --datadir=/va~g --socket=/var/lib/mysql/mysql.sock
14336 be/4 mysql 0.00 B/s 0.00 B/s 99.99 % 2.86 % mysqld --basedir=/usr --datadir=/va~g --socket=/var/lib/mysql/mysql.sock