vmstat 1 100
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 2307452 283392 712136 0 0 2 2 17 21 0 1 99 0 0
3 0 0 2307436 283392 712136 0 0 0 0 10677 3455 21 43 35 0 0
4 0 0 2307436 283392 712136 0 0 0 0 10700 3620 22 42 36 0 0
3 0 0 2307436 283392 712136 0 0 0 0 10549 3523 21 43 36 0 0
pidstat -I -w -p 3809 2
PID cswch/s nvcswch/s 命令
3809 0.00 0.00 java
3809 0.00 0.00 java
3809 0.00 0.00 java
我正在进行压力测试。服务器程序是一个 WebSocket 服务器,它接受 10,000 个客户端连接。每个客户端连接每 2 秒向服务器发送一条消息,服务器每 2 秒向每个客户端响应一条消息。
我的问题是:
1) 从 vmstat 1 100 来看,似乎 cpu(sy 是 42%,us 是 21% 左右)正在做很多系统级的工作而不是用户级的工作。所以我认为 CPU 的上下文切换太多了。
但是,从pidstat来看,服务器程序的cswch/s和nvcswch/s都是0。我认为这个结果意味着 CPU 没有太多的上下文切换。
谁能帮忙解释一下linux服务器的监控结果?
最佳答案
- pidstat 正在引用进程 3809
- vmstat 正在测量系统的所有进程,因为您只设置了采样频率
关于java - Java程序的vmstat pidstat结果分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33536019/