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 使用继承