笔记:Java 性能优化权威指南 第九、十、11章 GlassFish、Web应用、Web Service、EJB性能调优

1、GlassFish调优数据库


一、网络调优缓存

建立套接字链接池,适当重用这些链接,而不是每一个请求建立一个链接;设置适当的超时时间,一旦这些资源占用不频繁,就能够释放。安全


二、JDBC 执行时间:服务器

 利用动态Java追踪工具BTrace ,能够查找出慢速的数据库交互。网络


三、磁盘IOsession

服务器日志设置为所需最小级别。app

将事务日志文件配置到快速磁盘上或者有写缓存的磁盘阵列上,避免事务管理器在事务日志写入时候致使磁盘瓶颈。jsp

JMS消息也最好保存到SSD或有写缓存的磁盘阵列。分布式


四、资源池memcached

资源池须要调优的参数:最小、稳定状态和最大链接数。

通用准则:最大值为HTTP Worker 线程池的最大值,稳定态的池大小为CPU核数。

监控池中空闲链接数、等待链接个数,调节池大小。若是空闲数一直为0,等待数一直大于0,则说明池过小。


2、Web 容器调优


一、容器模式

默认是开发模式,正式调整为生成模式。


二、安全管理器

开启安全管理器会有性能代价


三、JVM调优

指定server模式,使用CMS收集器。若是须要分布式垃圾收集,则不要禁用System.gc().


四、HTTP监听器


(1)、线程池

初始线程数 MinCount 为CPU核数,线程数Count为2*CPU核数;监控工做线程数BusyCount,配置最大线程数MaxCount=BusyCount


(2)、Acceptor:

设置Selector 的 acceptor-threads为处理器数;

监控队列中链接数、最近平均排队链接数、队列中被拒绝数调节最大链接数

监控keep-alive的链接数、命中缓存数、拒绝数、超时数调节超时时间,最大链接

监控Http 的状态码,改正错误;将请求转换到新地址比重定向的性能好;


3、Web应用调优

一、使用Servlet 的init() 方法执行代价昂贵的一次性操做。

二、<%@include file="" %> 是静态引用资源;<jsp:include page="" /> 动态生成响应。

三、剔除多余空格,压缩JS 和CSS 。

四、设置JavaBean的合适范围:page、request、session、application。

五、el表达式取代Scriptlet

六、HTTP压缩:配置http-listener 的压缩属性Compression、comprehensiveMimeType、comprehensiveMinSize

七、内容缓存:如放在memcached 中。

八、session持久化:默认session保持在内存中,可保持在分布式缓存如Redis中。

九、静态文件缓存:放在Apache中,不在JVM内存中。


4、Web Service 性能调优

书中基于SOAP


5、EJB 性能调优

一、ORB线程池:初始设置最小容量为处理器数量,最大容量为2*处理器数量,监控用于处理的请求数、等待处理的请求数进行调节。

二、EJB缓存:根据缓存命中率调节。

三、事务属性:Required、Required New、Mandatory、Not Supported、Supports、Never。通常使用Required。

四、控制反序列化:用transient 标记不须要序列化的字段。

五、缓存静态资源:数据源、JMS对象、JNDI查询的会话Bean

六、Local接口替代Remote接口

七、乐观锁替代悲观锁

八、缓存查询结果

九、 FetchType:FetchType.LAZY 延迟加载,   FetchType.EAGER 提早载入

十、链接池:链接池的数量至少等于处理请求数的线程数

十一、批量更新:避免在循环中操做数据库,一个使用SQL语句完成。

十二、读取时候不带事务:TransactionAttributeType.SUPPORTS

1三、实体Bean 使用继承

相关文章
相关标签/搜索