我们有两台服务器陷入停顿。一台是虚拟机,另一台是裸机。两台服务器运行的代码并不相似,但它们位于同一网络上。看来,ksoftirqd(占用了大量 CPU)引发了大量上下文切换。
vmstat 输出
procs -----------memory---------- ---swap-- -----io---- -system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 605092 182496 2637556 0 0 0 0 4177 519187 8 19 73 0 0
2 0 0 605092 182496 2637556 0 0 0 0 4792 520980 8 19 74 0 0
3 0 0 605092 182496 2637552 0 0 0 0 2137 659640 18 26 56 0 0
...
pidstat 输出
TCK4-BM-06A:~ # pidstat -w -I 5
Linux 2.6.32.12-0.7-default (TCK4-BM-06A) 07/02/2012 _x86_64_
03:03:01 PM PID cswch/s nvcswch/s Command
03:03:06 PM 1 0.20 0.00 init
03:03:06 PM 4 386666.27 0.00 ksoftirqd/0
03:03:06 PM 6 0.60 0.00 ksoftirqd/1
03:03:06 PM 8 378213.17 0.00 ksoftirqd/2
03:03:06 PM 10 0.20 0.00 ksoftirqd/3
03:03:06 PM 12 0.20 0.00 ksoftirqd/4
03:03:06 PM 26 377115.37 0.00 ksoftirqd/11
03:03:06 PM 27 1.80 0.00 events/0
03:03:06 PM 28 1.00 0.00 events/1
03:03:06 PM 29 1.00 0.00 events/2
03:03:06 PM 30 1.00 0.00 events/3
03:03:06 PM 31 0.80 0.00 events/4
03:03:06 PM 32 0.80 0.00 events/5
...
我最初的想法是,由于两者都在同一个网络上,因此有东西淹没了网络。这与数据一致吗?
答案1
请参阅闰秒问题及其解决方法:闰秒期间还有其他人遇到过 Linux 服务器大量崩溃的情况吗?
您正面临其中一种症状。