单机服务器性能优化
单机Tomcat性能优化,修改Catalina.sh
# Register custom URL handlers
# Do this here so custom URL handles (specifically 'war:...') can be used in the security policy
JAVA_OPTS="$JAVA_OPTS -Djava.protocol.handler.pkgs=org.apache.catalina.webresources"
#增加JVM启动参数
JAVA_OPTS="$JAVA_OPTS -server -Xms8192M -Xmx8192M -Xss512k -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=15 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -Djava.awt.headless=true"
rem 以下配置为JVM参数调优解析:
-server rem 以服务器模式启动,启动速度慢,但更稳定,性能更好
-Xms8192M rem 由于本机内存为16G,这里就设置成8G(实际并未达到最大内存的80%)
-Xmx8192M rem -Xms与-Xmx设成一样的值,避免JVM因为频繁的GC导致性能大起大落
-Xss512k
-XX:+AggressiveOpts
-XX:+UseBiasedLocking
-XX:PermSize=64M rem 内存永久保留区域
-XX:MaxPermSize=300M rem 内存永久保留区域
-XX:+DisableExplicitGC rem 禁止System.gc(),免得误调用gc方法影响性能
-XX:MaxTenuringThreshold=31
-XX:+UseConcMarkSweepGC
-XX:+UseParNewGC rem 对年轻代采用多线程并行回收,这样收得快;
-XX:+CMSParallelRemarkEnabled rem 带CMS相关的是并发回收(CMS垃圾收集器)
-XX:+UseCMSCompactAtFullCollection rem 带CMS相关的是并发回收(CMS垃圾收集器)
-XX:LargePageSizeInBytes=128m
-XX:+UseFastAccessorMethods
-XX:+UseCMSInitiatingOccupancyOnly rem 带CMS相关的是并发回收(CMS垃圾收集器)
-Djava.awt.headless=true
修改server.xml
<Connector port="8848" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
minSpareThreads="25"
maxSpareThreads="75"
maxProcessors="1000"
minProcessors="5"
acceptCount="300"
maxThreads="300"
compression="on"
compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
/>
配置解析:
maxThreads 客户请求最大线程数
minSpareThreads Tomcat初始化时创建的 socket 线程数
maxSpareThreads Tomcat连接器的最大空闲 socket 线程数
enableLookups 若设为true, 则支持域名解析,可把 ip 地址解析为主机名
redirectPort 在需要基于安全通道的场合,把客户请求转发到基于SSL 的 redirectPort 端口
acceptAccount 监听端口队列最大数,满了之后客户请求会被拒绝(不能小于maxSpareThreads )
connectionTimeout 连接超时
minProcessors 服务器创建时的最小处理线程数
maxProcessors 服务器同时最大处理线程数
URIEncoding URL统一编码