下面的配置项可能因不同的容器有不一样,但是基本原理是差不多的
1. Thread Pool,调优WEB容器线程池比较好的实践是首先根据基本原则设置初始化配置(下图),然后在压力环境下观察并做适当修改。
2. 对于那些重IO(examples: invocation of remote EJBs, database interactions, communicating with slow clients, file system interactions)的应用,需要观察线程池和CPU utilization,防止因为线程IO等待造成容器请求排队而CPU却闲置的情况。
3. 对于线程池utilization的监控可以通过current threadsbusy-count来完成,下面是一些常见的配置指导。
4.常用的一些监控工具JavaMelody/probe(for TOMCAT)/Hyperic HQ。
5. request-processing.threadcount的设定一般为:对于非CMT(Chip Multithreading)的CPU其值为核数的两倍;对于CMT的CPU为虚拟处理器数(指硬件线程or芯片线程)的两倍。
6. acceptor-thread用于定义selector线程数,在多处理器环境可以设置为processor数。
7.max-connections-count属性用于指定最大连接队列的大小,一旦这个队列满,那么服务器将决绝其他的连接请求。
8. buffer-size-bytes属性用于指定发生和接受byte的buffer大小,一般不需要重新配置,除非遇到大的输入和输出负载,这个值的修改一般要伴随OS级别TCP buffer的修改。
9. persistent connection的概念:单个client-servler连接支持多个请求,持久连接状态下服务器保持连接的keep-alive state。一般为了防止恶意攻击,容器都会在下列情况关闭一个持久连接。
1)这个连接上的第一个请求和最后一个请求的时间间隔超过timeout-in-seconds值,默认为30s。
2)通过这个连接发生的请求数超过max-requests。
10. 如果要进一步做细监控,可以在应用上包含性能统计,然后通过JMX的形式暴露出去。在自己写监控统计时常用count-based 或 timebased的方式。Apache提供了一个好用的统计包,可以在统计中使用,请参考:http://commons.apache.org/math/userguide/stat.html#a1.2_Descriptive_statistics。假如自己在应用用实现了监控MBean,还需要注册到MBeanServer中,可以将这部分逻辑放到一个servlet context listener,让它伴随servlet initialization and destruction life cycle。
11. JDK自带的gzip compressor,在高并发场景下会由于内存分配过程中的锁竞争导致性能问题,开源产品LZF compressor在高压力下有较好的表现,但是gzip compressor的压缩率要高些。
12. 在分布式缓存系统的设计上需要考虑序列化和压缩技术,下面是容器与分布式缓存的交互图:
13. 对常用静态文件进行精简,例如JS,CSS。
14. 配置web服务器使得静态文件支持缓存和压缩(一般浏览器支持gzip)。
15. 关于session持久化的优化建议:1. 尽量保持放入session的对象简单;2. 尽量保持放入session的对象的size不要太大;3. 适当的使用transient关键字;4. 像分布式缓存设计思想一样,采用好的序列化/压缩技术。
16. 分布式日志收集方案:facebook开源产品Scribe(https://github.com/facebook/scribe)),再结合一个基于Java的scribeclient——collector(https://github.com/pierre/collector),将收集的日志如入HDFS。
分享到:
相关推荐
性能调优 性能监控 调优利器 大名鼎鼎的NMON
1.分篇章进行学习,内容控制30分钟内 2.1个月疗程,不要放弃治疗哦 3.图文并茂,有问题请发到邮箱
其中应用系统优化包括:对OC4J优化和监控、对并发管理器的优化、对Forms Server优化和监控;数据库优化包括:实例的性能优化和SQL语句的性能优化,实例优化和sql优化均可以通过AWR报告来分析并作出优化方案。 这篇...
Java生产环境下性能监控与调优详解视频教程 jstat查看JVM统计信息 jstack与线程的状态 MAT 分析内存溢出的方法 可视化工具分析GC日志 通过这套视频学习如何在生产环境下进行性能监控与调优。 视频在百度网盘中...
附光盘性能调优高可用与监控 》从作者贺春旸的实际工作经验出发 针对生产环境MySQL5 5分别从故障处理 高可用 性能优化等角度系统地阐述了数据库运维过程中需要注意的地方及解决问题的思路 并针对2013年2月Oraclel自...
高性能linux服务器构建实战运维监控性能调优与集群应用,中文书,epub格式,欢迎下载
本课程将为你讲解如何在生产环境下对Java应用做性能监控与调优;通过本课程,你将掌握多种性能监控工具应用,学会定位并解决诸如内存溢出、cpu负载飙高等问题;学会线上代码调试,Tomcat、Nginx,GC调优等手段; 读...
JAVA JVM性能调优监控工具详解
JVM性能监控与调优实战课程,作为整篇课程的重中之重,非常值得同学们参考学习。课程前端讲解了JVM的性能监控和调优的概述,对调优的的方法和工具进行讲解学习,让同学们掌握方法,理解知识。课程的中间阶段我们进行...
本手册专为数据库管理员、数据库设计人员、开发人员和系统管理员而编写。性能和调优:监控和分析,
1、性能指标性能指标概念:高并发=>吞吐响应快=>延时该概念是从应用负载的角度出发: Application o Libraries , System Call - ...性能监控和告警六步总结,从正确的角度出发,设定目标(性能优化不是漫无目的的) ,基准
将视频整合成为思维导图,看着方便,节省时间。 内容包括:(1)基于JDK命令后工具的监控(2)基于Btrace的监控调试...(4)java代码层优化(5)JVM层GC调优(6)基于JVisualVM的可视化监控(7)tomcat性能监控和调优
提供了VMware vCenter的性能调优方法和使用vimtop监控vCenter/VCSA的性能
JVM下篇:性能监控与调优篇.7z
基于JDK命令行的监控 基于JVisualVM的可视化监控 基于Btrace的监控调试 Tomcat性能监控与调优 Nginx性能监控与调优 JVM层GC调优 JVM字节码与java代码层调优
您可以应用这些简单的一步步的性能调优示例来提高您自己的 DB2 UDB 数据库系统上的性能。此外,您也有机会了解如何评估和分析访问计划,并修复“糟糕的查询”。在该文章系列的第 2 部分中,我们将使用更完整的数据库...
Unix系统性能监控和调优
性能调优是一个系统工程:全面监控分析操作系统、I/O性能、内存、应用及数据库才能快速找到问题根源;深刻理解DB2的锁及并发机制、索引原理、数据库参数、优化器原理、SQL语句调优等内部机理才能针对性地快速提出...
JVM下篇:性能监控与调优篇