Performance
如何找到正在敲擊我的 I/O 的東西?
在用作網路伺服器的 Ubuntu Linux 機器上,我發現我確實在敲擊 I/O:
- dysphoria():~$ iostat -d 3 3 Linux 3.13.0-45-generic (dysphoria) 2015-10-20 _x86_64_ (1 CPU) Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn xvda 53.20 3228.67 3.63 1962017809 2203864 xvdf 0.00 0.00 0.00 1308 0 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn xvda 1106.83 47900.72 0.00 133164 0 xvdf 0.00 0.00 0.00 0 0 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn xvda 1003.56 53824.91 8.54 151248 24 xvdf 0.00 0.00 0.00 0 0
請注意,平均I/O 高達 53,但目前I/O 超過 1000!我如何確定是什麼原因造成的?在
top
我看到 MySQL 的 CPU 為 20%,並且fatrace
沒有幫助:$ sudo fatrace read: Value too large for defined data type
我看過這個問題,但他們的問題是交換,我沒有啟用它,因為這是一個AWS EC2實例,具有EBS(非本地)儲存。關於機器的一些資訊:
$ free -m total used free shared buffers cached Mem: 2000 1906 94 7 3 1239 -/+ buffers/cache: 663 1337 Swap: 0 0 0 $ cat /etc/issue Ubuntu 14.04.1 LTS \n \l $ uname -a Linux dysphoria 3.13.0-45-generic #74-Ubuntu SMP Tue Jan 13 19:36:28 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux $ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 62 model name : Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz stepping : 4 microcode : 0x416 cpu MHz : 2500.058 cache size : 25600 KB physical id : 0 siblings : 1 core id : 0 cpu cores : 1 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology eagerfpu pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm xsaveopt fsgsbase smep erms bogomips : 5000.11 clflush size : 64 cache_alignment : 64 address sizes : 46 bits physical, 48 bits virtual power management:
您需要先使用
iotop
找到哪個程序的 IO 使用率高。並使用一些工具進行 MySQL 監控。