您的位置:首页 > 编程语言 > Java开发

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

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

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

每个服务器都有监听的socket。接收到请求后,请求被放置到执行队列中,然后请求被一个执行线程从执行队列中移出并执行。下图显示了服务器中组成请求处理架构的组件。



线程池过小
当用户数上升应用性能降低或吞吐量下降时,首先检查线程池。应该明确查看以下信息:

线程池利用率

请求等待数量(队列深度)

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

下图显示了线程池太小的情况。



未完待续……

Java EE应用中的性能问题解决方案参考资料下载

声明:本文禁止未经本人同意的任何形式转载!如有转载需求,可与本人通过个人资料中的电子邮箱联系。对于未经同意的转载,本人将保留进一步行动的权利!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐