又是一个老生常谈的话题,运维角度来看,虽然不能修改程序来提升性能降低负载,但是也是可以修改一些配置来优化一下tomcat 性能
一、Tomcat 并发优化线程优化 ,默认单线程运行 效率比较低
Tomcat 目录下 /conf/server.xml 文件 ,找到<Connector port="8080" 这样的关键字 修改< ..../> 尖括号内的内容:
port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol" enableLookups="false" maxThreads="1000" minSpareThreads="100" acceptCount="1500" disableUploadTimeout="true" connectionTimeout="20000" URIEncoding="UTF-8" redirectPort="8443" compression="on" compressionMinSize="1024" useSendfile="false" noCompressionUserAgents="gozilla, traviata" compressibleMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json"
参数说明:
- org.apache.coyote.http11.Http11Nio2Protocol:调整工作模式为Nio
- maxThreads:最大线程数,默认150。增大值避免队列请求过多,导致响应缓慢。
- minSpareThreads:最小空闲线程数。
- acceptCount:当处理请求超过此值时,将后来请求放到队列中等待。
- disableUploadTimeout:禁用上传超时时间
- connectionTimeout:连接超时,单位毫秒,0代表不限制
- URIEncoding:URI地址编码使用UTF-8
- enableLookups:关闭dns解析,提高响应时间
- compression:启用压缩功能
- compressionMinSize:最小压缩大小,单位Byte
- compressibleMimeType :压缩的文件类型
二、Tomcat内存优化
Tomcat内存优化主要是对 Tomcat 启动参数优化,
在 Tomcat 的启动脚本 catalina.sh 中设置 JAVA_OPTS 参数,如果没有设置过的话,直接在配置文件中 搜索JAVA_OPTS ,然后找到相关的配置附近 新启一行 写入配置
JAVA_OPTS="-server -XX:PermSize=2048M -XX:MaxPermSize=4096m -Xms8192m -Xmx8192m“
-server:启用 JDK的 server 版本;
-XX:PermSize:Java虚拟机永久代大小;
-XX:MaxPermSize:Java虚拟机永久代大小最大值;
-Xms:Java虚拟机初始化时堆的最小内存,一般与 Xmx配置为相同值,建议设置为可用内存的最大值的80%;
-Xmx:Java虚拟机可使用堆的最大内存;