压力测试问题,请高手进来

xhs_lh04 2008-11-01 10:36:37
问题描述:
我在LINUX上做服务程序的测试
理论上压力越大,CPU占用率越高
但我的压力加大后CPU使用率只能压到80-85%
说明服务程序一定有瓶颈,有等待现象
问题:我如何检测到此瓶颈?
如何在程序中尽可能的减少这种情况发生?
哪些语句或函数调用会不占CPU?
题外话如何尽可能提高服务器的并发性能,以及如何利用工具或者测试方法能检查到性能瓶颈?

还望各位高手来不吝赐教!在下先谢过了!!
...全文
192 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xhs_lh04 2008-11-03
  • 打赏
  • 举报
回复
谢谢各位了
liecs 2008-11-01
  • 打赏
  • 举报
回复
瓶颈的分析方法有好多。
像你的情况,有些地方描述的还不是很清楚。
基本上来看,你现在的瓶颈不在cpu?
只要是涉及到指令的执行,那自然是会占用cpu的了。

这里有几个问题
1. 你的程序是多线程的么? 服务器是几核的?
2. 然后你的程序是存在读盘操作么?或者是和其他模块交互的操作。
即io操作,如果有的话,cpu下不来也是正常的

你也可以通过linux自带的一些命令查看,top查看cpu的idel,以及io wait;iostat,vmstat查看io

我个人的感觉是,对于瓶颈的检查,更多的是依赖于你的模块功能的理解,和经验,不同的模块自然有不同的原因

当然对于服务性能的提升,有比较多的方式,如使用的算法是否是最优的,逻辑是否合理,
io交互较多的是否可以使用异步变成,对于cpu消耗型的也有相关的工具分析哪条命令占用了较多时间。等等
xiaopoy 2008-11-01
  • 打赏
  • 举报
回复
资源不仅仅是CPU嘛,其他地方碰到瓶顶也可能啊
xhs_lh04 2008-11-01
  • 打赏
  • 举报
回复
谢谢楼上几位
我的服务器是,,哎挺复杂的,有多进程(几个模块),模块内部又是多线程的
内部用消息队列传输,外部是TCP长连接
性能也做过优化,并发能力提高了一倍,压力上去了CPU占用上不去,我想应该还有可以提高的地方
呵呵所以有此一问,再次谢谢楼上几位的热心
liubuweiright 2008-11-01
  • 打赏
  • 举报
回复

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧