声明:本文禁止未经本人同意的任何形式转载!如有转载需求,可与本人通过个人资料中的电子邮箱联系。对于未经同意的转载,本人将保留进一步行动的权利
线程池
当Web应用服务器接收到一个请求后,它将请求放置到请求队列,让执行线程来处理,这就是Web应用服务器的主要入口途径。在对内存进行调优后,对应用影响较大的调优选项就是对执行线程池的尺寸配置。线程池的大小控制着并发处理请求的能力。如果线程池太小,请求将在队列中等待较长时间;如果池的尺寸太大,CPU就会在不同线程的上下文切换上花费过多的时间。
每个服务器都有监听的socket。接收到请求后,请求被放置到执行队列中,然后请求被一个执行线程从执行队列中移出并执行。下图显示了服务器中组成请求处理架构的组件。
![](http://www.betteryou.com.cn/bbspic/tuning8.jpg)
线程池过小
当用户数上升应用性能降低或吞吐量下降时,首先检查线程池。应该明确查看以下信息:
- 线程池利用率
- 请求等待数量(队列深度)
如果线程池的利用率达到100%,并且有请求处于等待状态,这时的响应时间就会明显降低。此时,CPU的利用率可能也不高,因为应用服务器没有足够多的工作让CPU持续繁忙。此时应该逐步扩大线程池,监控应用的吞吐量直至响应时间降低。在整个过程中需要保持持续的负荷以确保对性能评估的准确性。当观察到吞吐量非常平稳后,就可逐步降低线程池的大小,直至应用刚好能够输出最大吞吐量的尺寸。
下图显示了线程池太小的情况。
![](http://www.betteryou.com.cn/bbspic/tuning9.jpg)
未完待续……
声明:本文禁止未经本人同意的任何形式转载!如有转载需求,可与本人通过个人资料中的电子邮箱联系。对于未经同意的转载,本人将保留进一步行动的权利!