1.项目参数调整
a) log4j.properties日志级别调整,一般生产环境需要将log4j.rootLogger设置为ERROR,如果需要警告级别的信息,也是可以设置成WARN
b) Spring-hibernate.xml中,hibernate.show_sql的值设置为false,hibernate.generate_statistics的值设置为false
(console输出内容过多时,会导致应用异常卡顿)
2.应用服务器参数调整(tomcat)
(JVM参数设置,windows环境将以下参数添加到TOMCAT_HOME/bin/catalina.bat中(linux下为catalina.sh))
添加set "JAVA_OPTS=-server -Xms4096m -Xmx4096m -XX:PermSize=256M -XX:MaxPermSize=512m -XX:NewSize=256m -XX:MaxNewSize=512m"
各参数含义:
-server//服务器模式
-Xmx4096m //JVM最大允许分配的堆内存,按需分配
-Xms4096m //JVM初始分配的堆内存,一般和Xmx配置成一样以避免每次gc后JVM重新分配内存。
-Xmn512m //年轻代内存大小,整个JVM内存=年轻代 + 年老代 + 持久代
-XX:PermSize=256m //持久代内存大小
-XX:MaxPermSize=512m //最大持久代大小
-Xss256k //设置每个线程的堆栈大小
-XX:+DisableExplicitGC //忽略手动调用GC, System.gc()的调用就会变成一个空调用,完全不触发GC
-XX:+UseConcMarkSweepGC //并发标记清除(CMS)收集器
-XX:+CMSParallelRemarkEnabled //降低标记停顿
-XX:+UseCMSCompactAtFullCollection //在FULL GC的时候对年老代的压缩
-XX:LargePageSizeInBytes=128m //内存页的大小
-XX:+UseFastAccessorMethods //原始类型的快速优化
-XX:+UseCMSInitiatingOccupancyOnly //使用手动定义初始化定义开始CMS收集
-XX:CMSInitiatingOccupancyFraction=70 //使用cms作为垃圾回收使用70%后开始CMS收集
-XX:-UseLoopPredicate Hotspot循环Bug详解,java7非update版本需要设置此参数,否则会有应用服务器宕机风险,若发现应用服务器自动关闭,很大可能是因为此bug
生产环境配置参考:
-server -Xms8G -Xmx8G -XX:PermSize=480M -XX:MaxPermSize=2G -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=31 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:-UseLoopPredicate
(windows系统在文件在conf/server.xml,主要设置最大线程(还有请求头大小....))
<Connector port="8080" protocol="HTTP/1.1"
URIEncoding="UTF-8" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true" connectionTimeout="20000"
acceptCount="800" maxThreads="800" maxProcessors="1000" minProcessors="5"
useURIValidationHack="false"
compression="on" compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
redirectPort="8443"
/>