CPU利用率低,性能无法跑上去的定位思路

网友投稿 1155 2022-05-28

定位思路:

1 首先确认是单核 CPU或者是单线程 CPU占用CPU 100%, 如果是,那么分析业务逻辑。

2 如果单核 CPU或者是单线程 CPU都没有到100%,那么软件肯定在通过操作系统调用在等某个资源(因为应用程序接口如果不调用操作系统的接口,实际就是死循环了)

3 去人等待的资源, 可以通过strace -p $PID -T -tt查看等待的资源, 如磁盘IO, 等待网络,应用程序主动sleep, 或者等待信号

案例1:等待网络, strace -p $PID -T -tt 发现epoll_pwait使用了5ms以上才返回,跟踪句柄,发现是数据库通信的句柄,后面确认是数据库响应慢

CPU利用率低,性能无法跑上去的定位思路

案例2: 应用程序主动sleep, strace -p $PID -T -tt 发现 应用程序概率休眠10ms, 分析业务逻辑发现,业务软件在发现队列为空时,会休眠10ms,  导致服务器的性能提升后,并发提升不明显

案例3: 等待信号, strace -p $PID -T -tt 发现ceph软件在读取数据时,有较多的信号等待,然后找架构文档,发现业务逻辑为从A线程,给B线程发消息,然后在给C线程发消息。 这样观察到的CPU利用不高,实际性能无法提升。然后将这3个线程绑在一个 CPU,可以发现 单核 CPU 100%

任务调度

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:GreenPlum高并发查询锁优化
下一篇:【技术总结】从Hash索引到LSM树(一)
相关文章