优化Tomcat7启动慢
vim /data/jdk8/jre/lib/security/java.security
securerandom.source=file:/dev/random
替换成
securerandom.source=file:/dev/./urandom
jvm 内存优化
vim /data/tomcat8/bin/catalina.sh
添加在 cygwin=false 的上一行
JAVA_OPTS=" -server -Xms4096M -Xmx4096M -XX:MaxNewSize=1024m -XX:MaxPermSize=1024m -XX:PermSize=512M -Xmn1024M -XX:+UseParallelGC -XX:+UseBiasedLocking -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8"
-server #让jvm在服务模式下运行,可以提高jvm运行效率
-Xmx #最大内存,如果是32操作系统,2G内存以上,设置为1280G是最优的,设置太大了会造成jvm崩溃,这是32位jvm本身的限制造成的。
-Xmn #最小内存,官方推荐为最大内存的3/8,这里取下整,就521M了
-Xms #初始化内存,直接与最大内存一致,这样可以避免内存重复分配,降低效率,直接上来就是最大的,jvm也不用再扩展内存了,节省时间。
-XX:PermSize #非堆区初始化内存分配大小
-XX:MaxPermSize #非堆区分配内存的最大上限
-XX:MaxNewSize #新生代可被分配的内存的最大上限
-XX:+UseParallelGC #优化垃圾回收。
-XX:+UseBiasedLocking #优化锁机制。
-Djava.awt.headless=true #Headless模式是系统的一种配置模式。在该模式下,系统缺少了显示设备、键盘或鼠标。
-Dfile.encoding=UTF-8 #用来改变jdk处理文件等的默认字符编码
-Dsun.jnu.encoding=UTF-8 #调整操作系统编码
tomcat配置优化
vim /data/tomcat8/conf/server.xml
<Connector executor="tomcatThreadPool"
port="8890" protocol="org.apache.coyote.http11.Http11AprProtocol"
enableLookups="false"
maxHttpHeaderSize ="102400"
URIEncoding="UTF-8"
useBodyEncodingForURI="true"
maxThreads="1000"
acceptCount="1000"
connectionTimeout="10000"
minSpareThreads="100"
maxSpareThreads="300"
maxKeepAliveRequests="500"
maxProcessors="1000"
minProcessors="5"
maxIdleTime="4000"
redirectPort="7443" />
enableLookups #关闭tomcat的dns查询,节省带宽
maxHttpHeaderSize #请求和响应的http头的最大大小,以字节为单位指定,默认8192(8k)
URIEncoding #URL编码字符集
useBodyEncodingForURI #请求参数的编码方式要采用请求体的编码方式
maxThreads #最大线程数
acceptCount #等待的线程数量
connectionTimeout #接受一个连接后等待的时间,单位毫秒
minSpareThreads #最小备用线程数,可以理解为,服务器一旦启动,马上创建这么多线程以备使用,因此设置太大了浪费资源,太小了会降低效率
maxSpareThreads #最大备用线程数,创建的线程数量超过这个数量时,如果某些线程空闲,那么这些会被回收,直到线程总数量小于这个值
maxKeepAliveRequests #需要保持的最大请求数,即处于keepAlive状态的请求的个数,建议此值为maxThreads * 0.5。
maxProcessors #最大连接线程数,即:并发处理的最大请求数
minProcessors #最小空闲连接线程数,用于提高系统处理性能
maxIdleTime #当前线程大于初始化线程,那空闲线程存活的时间,单位毫秒