Java EE应用中的性能问题解决方案 — 第二部分 Java EE线程池调整优化(A)
2008-06-02 10:19
706 查看
声明:本文禁止未经本人同意的任何形式转载!如有转载需求,可与本人通过个人资料中的电子邮箱联系。对于未经同意的转载,本人将保留进一步行动的权利
线程池
当Web应用服务器接收到一个请求后,它将请求放置到请求队列,让执行线程来处理,这就是Web应用服务器的主要入口途径。在对内存进行调优后,对应用影响较大的调优选项就是对执行线程池的尺寸配置。线程池的大小控制着并发处理请求的能力。如果线程池太小,请求将在队列中等待较长时间;如果池的尺寸太大,CPU就会在不同线程的上下文切换上花费过多的时间。
每个服务器都有监听的socket。接收到请求后,请求被放置到执行队列中,然后请求被一个执行线程从执行队列中移出并执行。下图显示了服务器中组成请求处理架构的组件。
线程池过小
当用户数上升应用性能降低或吞吐量下降时,首先检查线程池。应该明确查看以下信息:
线程池利用率
请求等待数量(队列深度)
如果线程池的利用率达到100%,并且有请求处于等待状态,这时的响应时间就会明显降低。此时,CPU的利用率可能也不高,因为应用服务器没有足够多的工作让CPU持续繁忙。此时应该逐步扩大线程池,监控应用的吞吐量直至响应时间降低。在整个过程中需要保持持续的负荷以确保对性能评估的准确性。当观察到吞吐量非常平稳后,就可逐步降低线程池的大小,直至应用刚好能够输出最大吞吐量的尺寸。
下图显示了线程池太小的情况。
未完待续……
Java EE应用中的性能问题解决方案参考资料下载
声明:本文禁止未经本人同意的任何形式转载!如有转载需求,可与本人通过个人资料中的电子邮箱联系。对于未经同意的转载,本人将保留进一步行动的权利!
线程池
当Web应用服务器接收到一个请求后,它将请求放置到请求队列,让执行线程来处理,这就是Web应用服务器的主要入口途径。在对内存进行调优后,对应用影响较大的调优选项就是对执行线程池的尺寸配置。线程池的大小控制着并发处理请求的能力。如果线程池太小,请求将在队列中等待较长时间;如果池的尺寸太大,CPU就会在不同线程的上下文切换上花费过多的时间。
每个服务器都有监听的socket。接收到请求后,请求被放置到执行队列中,然后请求被一个执行线程从执行队列中移出并执行。下图显示了服务器中组成请求处理架构的组件。
线程池过小
当用户数上升应用性能降低或吞吐量下降时,首先检查线程池。应该明确查看以下信息:
线程池利用率
请求等待数量(队列深度)
如果线程池的利用率达到100%,并且有请求处于等待状态,这时的响应时间就会明显降低。此时,CPU的利用率可能也不高,因为应用服务器没有足够多的工作让CPU持续繁忙。此时应该逐步扩大线程池,监控应用的吞吐量直至响应时间降低。在整个过程中需要保持持续的负荷以确保对性能评估的准确性。当观察到吞吐量非常平稳后,就可逐步降低线程池的大小,直至应用刚好能够输出最大吞吐量的尺寸。
下图显示了线程池太小的情况。
未完待续……
Java EE应用中的性能问题解决方案参考资料下载
声明:本文禁止未经本人同意的任何形式转载!如有转载需求,可与本人通过个人资料中的电子邮箱联系。对于未经同意的转载,本人将保留进一步行动的权利!
相关文章推荐
- Java EE应用中的性能问题解决方案 — 第二部分 Java EE线程池调整优化(B)
- Java EE应用中的性能问题解决方案 — 第三部分 JDBC调整优化
- Java EE应用中的性能问题解决方案 — 第一部分 内存溢出的解决办法及JVM内幕(D)
- Java EE应用中的性能问题解决方案 — 第一部分 内存溢出和JVM内幕(A)
- Java EE应用中的性能问题解决方案 — 第一部分 内存溢出和JVM内存管理内幕(B)
- Java EE应用中的性能问题解决方案 — 第一部分 内存溢出的解决办法(C)
- Android 性能优化——解决应用启动白屏/黑屏问题
- Android 常用性能优化方案:解决内存泄漏问题
- mysql性能优化(五) mysql中SELECT+UPDATE处理并发更新问题解决方案
- Android 平台侧性能优化之应用启动[问题已解决]
- ListView 显示网络图片,问题解决及性能优化
- web应用中webapp. root重用问题解决方案
- Android OpenGL ES部分问题解决方案
- ListView性能优化及加载图片出现图片错位,闪朔等问题的解决
- 分享Web应用运行的细节问题:预编译提高网站性能、跟踪用户习惯和解决线程同步
- iOS开发那些事--性能优化–内存泄露问题的解决
- iOS开发那些事--性能优化–内存泄露问题的解决 推荐
- 分享Web应用运行的细节问题:预编译提高网站性能、跟踪用户习惯和解决线程同步
- Andriod应用性能优化方案(1)
- Tair LDB基于Prefixkey的范围查找性能优化项目之后续问题解决记录