`

Java EE应用中的性能问题解决方案 — 第二部分 Java EE线程池调整优化(A)

阅读更多

声明:本文禁止未经本人同意的任何形式转载!如有转载需求,可与本人通过个人资料中的电子邮箱联系。对于未经同意的转载,本人将保留进一步行动的权利

线程池
当Web应用服务器接收到一个请求后,它将请求放置到请求队列,让执行线程来处理,这就是Web应用服务器的主要入口途径。在对内存进行调优后,对应用影响较大的调优选项就是对执行线程池的尺寸配置。线程池的大小控制着并发处理请求的能力。如果线程池太小,请求将在队列中等待较长时间;如果池的尺寸太大,CPU就会在不同线程的上下文切换上花费过多的时间。
 
每个服务器都有监听的socket。接收到请求后,请求被放置到执行队列中,然后请求被一个执行线程从执行队列中移出并执行。下图显示了服务器中组成请求处理架构的组件。
 

 
 
线程池过小
当用户数上升应用性能降低或吞吐量下降时,首先检查线程池。应该明确查看以下信息:
线程池利用率
请求等待数量(队列深度)
 
如果线程池的利用率达到100%,并且有请求处于等待状态,这时的响应时间就会明显降低。此时,CPU的利用率可能也不高,因为应用服务器没有足够多的工作让CPU持续繁忙。此时应该逐步扩大线程池,监控应用的吞吐量直至响应时间降低。在整个过程中需要保持持续的负荷以确保对性能评估的准确性。当观察到吞吐量非常平稳后,就可逐步降低线程池的大小,直至应用刚好能够输出最大吞吐量的尺寸。
 
下图显示了线程池太小的情况。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/BU_BetterYou/archive/2008/06/02/2502277.aspx

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics