zoukankan      html  css  js  c++  java
  • 笔记:Java 性能优化权威指南 第9、10、11章 GlassFish、Web应用、Web Service、EJB性能调优

    一、GlassFish调优


    1、网络调优

    创建套接字连接池,适当重用这些连接,而不是每个请求创建一个连接;设置适当的超时时间,一旦这些资源占用不频繁,就可以释放。


    2、JDBC 执行时间:

     利用动态Java追踪工具BTrace ,可以查找出慢速的数据库交互。


    3、磁盘IO

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

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

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


    4、资源池

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

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

    监控池中空闲连接数、等待连接个数,调节池大小。如果空闲数一直为0,等待数一直大于0,则说明池太小。


    二、Web 容器调优


    1、容器模式

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


    2、安全管理器

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


    3、JVM调优

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


    4、HTTP监听器


    (1)、线程池

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


    (2)、Acceptor:

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

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

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

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


    三、Web应用调优

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

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

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

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

    5、el表达式取代Scriptlet

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

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

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

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


    四、Web Service 性能调优

    书中基于SOAP


    五、EJB 性能调优

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

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

    3、事务属性:Required、Required New、Mandatory、Not Supported、Supports、Never。一般使用Required。

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

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

    6、Local接口替代Remote接口

    7、乐观锁替代悲观锁

    8、缓存查询结果

    9、 FetchType:FetchType.LAZY 延迟加载,   FetchType.EAGER 提前载入

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

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

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

    13、实体Bean 使用继承










  • 相关阅读:
    加速你的Hibernate引擎(上)
    Download a web page IronPython Cookbook
    豌豆荚工程师谈其新版应用搜索技术
    WebRequest.Proxy Property (System.Net)
    机器学习各类工具weka、scikitlearn等各项指标的对比
    Implementing a small Cron service in C# CodeProject
    Submit a POST form and download the result web page
    百度辜斯缪谈搜索引擎的未来——实体搜索
    python get with proxy
    R,不仅仅是一种语言
  • 原文地址:https://www.cnblogs.com/leeeee/p/7276230.html
Copyright © 2011-2022 走看看