我正试图找到多线程服务的瓶颈。我使用-c 100的ab,并在350左右观察TPS。问题是最高CPU使用率是70%,内存是10%。所以它看起来不是CPU或内存限制。它不是在做磁盘或网络I/O。我如何确定瓶颈是什么?如何找到多线程服务中的瓶颈?
回答
你有死亡线程在等待对方完成?你有线程在等待数据库锁吗?等待线程通常可能是系统看起来放慢或等待的瓶颈,但您不会总是看到资源消耗。
@Chis Aldrich - cseric如何找到这些线程? – MaasSql 2010-06-28 19:38:46
@MaasSql - 我知道这很荒谬,但VS2010探查器有一些很棒的功能,可以帮助你找到死锁。 – ChaosPandion 2010-06-28 19:46:07
由于ChaosPandion指出您需要使用一个分析器(或可能会显示线程的代码调试器)。但是剖析器是最好的选择。不知道使用什么系统或使用哪种语言,推荐使用Profiler工具更为困难。在我的公司,我们倾向于坚持使用Java和IBM堆栈产品,因此我们坚持使用IBM分析器。希望这有帮助。 – 2010-06-28 19:58:56
- 1. 查找.NET多线程瓶颈
- 2. Jython中隐藏的多线程瓶颈?
- 3. 瓶颈上的Tensorflow:多线程错误
- 4. 避免微服务中的瓶颈
- 5. C++。多线程瓶颈缩小到列表中的单线程应用程序
- 6. 瓶颈:404在服务器上找不到请求的URL。
- 7. 如何在asp.net应用程序中找到I/O瓶颈
- 8. 在JavaScript中寻找瓶颈?
- 9. 如何找出网页的CPU瓶颈
- 10. 服务器虚拟化:如何避免,找到并修复瓶颈?
- 11. 节点代理服务器,瓶颈?
- 12. 查找流程瓶颈rails/ruby
- 13. python瓶服务器中的线程
- 14. 查找SQL查询瓶颈
- 15. 如何找到我的Ruby应用程序中的性能瓶颈?
- 16. 瓶颈服务器与线程给出“错误:[Errno 32]损坏的管道”
- 17. 查找图中的'瓶颈边缘'
- 18. 如何找到Postgres的SQL瓶颈加入
- 19. 找到瓶颈。 Ffmpeg不使用4核心8线程CPU的800%。为什么?
- 20. SQL瓶颈,如何解决
- 21. 如何剖析OpenMP瓶颈
- 22. 多个实时线程导致udp套接字连接瓶颈
- 23. GPU编程 - 转移瓶颈
- 24. 如何避免性能瓶颈使用JNI时Java Web应用程序/服务
- 25. 瓶颈和ZeroMQ
- 26. java.awt.container.add(comp)瓶颈
- 27. IIS瓶颈?
- 28. 是PowerShell的瓶颈
- 29. 瓶颈的含义?
- 30. 查找Java EE应用程序中的瓶颈
你可以添加一些关于这个过程的细节吗?你说没有磁盘或网络I/O这个事实似乎有点偏离。 – ChaosPandion 2010-06-28 19:34:09
基本上,服务会产生6个线程(使用ExecutorSevice池)为每个传入请求从缓存中执行6次读取。我正在使用ehcache,只能访问4个资源。我证实除第一次通过外,所有访问都是缓存命中。资源非常小,最大5kb。我使用JProfiler,看到90%的时间花在sun.misc.unsafe.park上,另外10%是我的方法。我应该如何解释这个/进一步调试? – extraeee 2010-06-29 05:38:50