如何压测http服务(tomcat)的CPU
前提: 大家好,现在需要压测一台tomcat服务器,想找出应用的瓶颈在哪,但是在测试过程中,jvm资源占用的cpu一直还没到50%,mysql已经被拖垮了。
现在我想找出应用服务的瓶颈,多少并发时,cpu会被占用过高,请问怎么实现呢?
我想到的方法是:在代码层面上创建多个线程,不读写数据库,让cpu上去。请问可行不??
感谢~~
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
一般系统瓶颈的话增加服务器数量、优化请求基本上都能解决,更大的瓶颈基本上都是在数据库链接上,按照你说的你是想要测试一下你的请求并发瓶颈,但是如果你不连接数据库进行测试,基本上是没什么效果的,对真实项目并没有什么帮助,获取的瓶颈并不是你真正的瓶颈
这怎么看都像是数据库操作方面的问题,比如 SQL 需要优化,或者需要加缓存以减少数据库操作。看不出与 Tomcat 有什么关系。
一般来说Web应用的瓶颈都在数据库上,应用服务器(无论是Tomcat还是别的)负载过大的话,一般来说只要加服务器就能解决的。
如果希望降低成本,找出应用的瓶颈在哪,压测是有些窍门的,比如:
把mysql存储引擎改成
blackhole
,这样数据库就不会容易被轻易拖垮。如果 CPU 占用太多,是不是已经使用了数据库连接池,限制链接的创建。为了减少数据库的访问,某些更新少的数据是不是可以放缓存如 Redis,不需要每次都访问数据库去取数据。
简单压力的测试,我喜欢用 apache server 里的 ab,复杂的可以试试 JMeter,压力测试就比较容易分析找出问题在那。
mysql都挂了,应该不是tomcat瓶颈,你要查查sql是否都优化了,另外开启mysql统计,查查看是否有慢sql,是否有全表扫描,索引是否高效。另外有没有使用连接池对数据库做并发控制,mysql支持的并发跟cpu核心数有关。一般慢sql容易拖垮数据库
tomcat慢了就加呗,成本也不高。
我遇到的瓶颈都在数据库上,io高,命中率降低,每天看慢查询需要优化sql,
。。。。这是个痛苦的问题