• tomcat 性能调优


    1. 内存

    windows在bin/catalina.bat的注释下第一行加入

    set JAVA_OPTS=-Xms2048m -Xmx2048m -Xss128K -XX:PermSize=64m -XX:MaxPermSize=256m

    linux在bin/catalina.sh的注释下第一行加入

    JAVA_OPTS="-Xms2048m -Xmx2048m -Xss128K -XX:PermSize=64m -XX:MaxPermSize=256m"

    这些参数是否生效,可以通过命令jmap -heap 进程ID查看。

    最大堆内存和最小堆内存最好设置为一样的。堆内存一般设置为可用内存的80%左右,后面的几个参数根据堆内存进行调整。

    2. IO优化

    tomcat一共有三种IO策略,bio(默认,兼顾旧jdk,性能差),nio,apr

    这里修改为nio:

    把   <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

    改为<Connector connectionTimeout="20000" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8443"/>

    apr是使用了系统的异步io,需要安装软件,然后在tomcat中配置,我没有使用这种方式。

    3. 线程池

    在conf/server.xml中打开Executer,并修改参数如下:

    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="20" maxIdleTime="60000" />

    在Connector中使用:

    <Connector executor="tomcatThreadPool" connectionTimeout="20000" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8443"/>

    4. 压缩

    在Connector中添加compression="on" compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"

    5. 禁用DNS

    在Connector中添加enableLookups="false"

    最终Connector如下

    <Connector executor="tomcatThreadPool" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" maxHttpHeaderSize="8192" maxThreads="1000" minSpareThreads="100" maxSpareThreads="1000" minProcessors="100" maxProcessors="1000" enableLookups="false" compression="on" compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" connectionTimeout="20000" URIEncoding="utf-8" acceptCount="1000" redirectPort="8443" disableUploadTimeout="true"/>

    如此修改后,我的tomcat吞吐量从380/s达到了3800/s,完全扩大了10倍。

  • 相关阅读:
    如何检测死锁并快速定位死锁位置
    几种线程本地存储变量和普通变量的性能比较
    multi_index_container性能测试
    [高并发引擎]定时器模块
    [高并发引擎]Log模块
    静态博客教程 1:hexo + github
    蛇形填数
    实现简单的 ls 命令
    静态库与动态库的创建和使用
    用两个栈实现队列
  • 原文地址:https://www.cnblogs.com/qlong8807/p/6110304.html
Copyright © 2020-2023  润新知