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










  • 相关阅读:
    JDBC 复习4 批量执行SQL
    JDBC 复习3 存取Oracle大数据 clob blob
    Oracle复习
    Linux命令(1)grep
    JDBC 复习2 存取mysql 大数据
    JDBC 复习1 DBUtil
    php 环境搭建问题
    Windows 批处理 bat 开启 WiFi 菜单选项 设置ID PWD
    Bat 批处理启动和停止Oracle 服务
    docker 学习1 WSL docker ,Windows docker
  • 原文地址:https://www.cnblogs.com/leeeee/p/7276230.html
Copyright © 2011-2022 走看看