内容转载自:java
http://mp.weixin.qq.com/s?__biz=MjM5NzMyMjAwMA==&mid=2651478294&idx=3&sn=8d72cb9fd39c204ab086cd152f4d90e5&chksm=bd2535698a52bc7f08a24774d854c4bc2da8480fe01f9c7f6b72510dd64b5f837fd99717ea80&mpshare=1&scene=23&srcid=0315lUalUtvkLoSecAog5kwh#rdtomcat
一、JDK内存优化服务器
根据服务器物理内容状况配置相关参数优化tomcat性能。当应用程序须要的内存超出堆的最大值时虚拟机就会提示内存溢出,而且致使应用服务崩溃。所以通常建议堆的最大值设置为可用内存的最大值的80%。 Tomcat默承认以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,须要调大。网络
Tomcat默承认以使用的内存为128MB,并发
Windows下,在文件/bin/catalina.bat,jvm
Unix下,在文件/bin/catalina.sh的前面,socket
增长以下设置:性能
JAVA_OPTS=’-Xms【初始化内存大小】 -Xmx【可使用的最大内存】 -XX:PermSize=64M -XX:MaxPermSize=128m’ 须要把几个参数值调大。例如: JAVA_OPTS=’-Xms256m -Xmx512m’ 表示初始化内存为256MB,可使用的最大内存为512MB。优化
参数详解线程
-server 启用jdk 的 server 版; -Xms java虚拟机初始化时的最小内存; -Xmx java虚拟机可以使用的最大内存; -XX:PermSize 内存永久保留区域 -XX:MaxPermSize 内存最大永久保留区域 -Xmn jvm最小内存
32G 内存配置示例:
JAVA_OPTS="$JAVA_OPTS -Xms10g -Xmx10g -XX:PermSize=1g -XX:MaxPermSize=2g -Xshare:off -Xmn1024m
二、tomcat线程优化
在tomcat配置文件server.xml中的配置中,和链接数相关的参数有:
maxThreads: Tomcat使用线程来处理接收的每一个请求。这个值表示Tomcat可建立的最大的线程数。默认值150。
acceptCount: 指定当全部可使用的处理请求的线程数都被使用时,能够放处处理队列中的请求数,超过这个数的请求将不予处理。默认值10。
minSpareThreads: Tomcat初始化时建立的线程数。默认值25。
maxSpareThreads: 一旦建立的线程超过这个值,Tomcat就会关闭再也不须要的socket线程。默认值75。
enableLookups: 是否反查域名,默认值为true。为了提升处理能力,应设置为false
connnectionTimeout: 网络链接超时,默认值60000,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。一般可设置为30000毫秒。
maxKeepAliveRequests: 保持请求数量,默认值100。 bufferSize: 输入流缓冲大小,默认值2048 bytes。
compression: 压缩传输,取值on/off/force,默认值off。 其中和最大链接数相关的参数为maxThreads和acceptCount。若是要加大并发链接数,应同时加大这两个参数。
32G 内存配置示例:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" maxThreads="1000" minSpareThreads="60" maxSpareThreads="600" acceptCount="120" redirectPort="8443" URIEncoding="utf-8"/>