CPU利用率低,性能无法跑上去的定位思路
【摘要】 定位思路:1 首先确认是单核 CPU或者是单线程 CPU占用CPU 100%, 如果是,那么分析业务逻辑。2 如果单核 CPU或者是单线程 CPU都没有到100%,那么软件肯定在通过操作系统调用在等某个资源(因为应用程序接口如果不调用操作系统的接口,实际就是死循环了)3 去人等待的资源, 可以通过strace -p $PID -T -tt查看等待的资源, 如磁盘IO, 等待网络,应用程序主动...
定位思路:
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以上才返回,跟踪句柄,发现是数据库通信的句柄,后面确认是数据库响应慢
案例2: 应用程序主动sleep, strace -p $PID -T -tt 发现 应用程序概率休眠10ms, 分析业务逻辑发现,业务软件在发现队列为空时,会休眠10ms, 导致服务器的性能提升后,并发提升不明显
案例3: 等待信号, strace -p $PID -T -tt 发现ceph软件在读取数据时,有较多的信号等待,然后找架构文档,发现业务逻辑为从A线程,给B线程发消息,然后在给C线程发消息。 这样观察到的CPU利用不高,实际性能无法提升。然后将这3个线程绑在一个 CPU,可以发现 单核 CPU 100%
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)