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

举报
lgj 发表于 2019/12/23 18:11:16 2019/12/23
【摘要】 定位思路:1 首先确认是单核 CPU或者是单线程 CPU占用CPU 100%, 如果是,那么分析业务逻辑。2 如果单核 CPU或者是单线程 CPU都没有到100%,那么软件肯定在通过操作系统调用在等某个资源(因为应用程序接口如果不调用操作系统的接口,实际就是死循环了)3 去人等待的资源, 可以通过strace -p $PID -T -tt查看等待的资源, 如磁盘IO, 等待网络,应用程序主动...

1577095258644719.jpg


定位思路:

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

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

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



 案例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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。