Tomcat的配置和优化-02

续上一篇

1.Tomcat之并发优化:

1.1位置

/opt/tomcat7/conf下的server.xml文件中<Connector>节点的配置优化,记得先备份

   

 1.2优化

  1. 标准版
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
 maxThreads="600"
 minSpareThreads="100"
 maxSpareThreads="500"
 acceptCount="700"
 connectionTimeout="20000"
 redirectPort="8443" />

 

  1. 复杂版
<Connector  port="8080"
    protocol="HTTP/1.1"
    URIEncoding="UTF-8"
    minSpareThreads="25" 
    maxSpareThreads="75"
    enableLookups="false"
    disableUploadTimeout="true"
    connectionTimeout="20000"
    acceptCount="300" 
    maxThreads="300"
    maxProcessors="1000"
    minProcessors="5"
    useURIValidationHack="false"
    compression="on"
    compressionMinSize="2048"
    compressableMimeType="text/html,text/xml,text/JavaScript,text/css,text/plain"
    redirectPort="8443"/>

注意:坑爹

指定JDK路径动态配置
 
一般情况下我们都是让Tomcat根据配置的java_home环境变量自动去找jdk路径,
但当同一台服务器有不同的服务,且使用不同的jdk版本是就会出现问题。
我们可以在catalina.sh脚本文件(windows系统下为catalina.bat)中动态设置JAVA_HOME解决此问题。

1.3参数逐项说明

URIEncoding=”UTF-8” 
    使得tomcat可以解析含有中文名的文件的url,在server.xml文件的Connector标签中
    增加URIEncoding="UTF-8"属性,解决中文参数乱码问题。
minSpareThreads:最小备用线程数,tomcat启动时的初始化的线程数,默认10.
maxSpareThreads
enableLookups
disableUploadTimeout:connectionTimeout:网络连接超时,单位毫秒。设置为 -1 表示永不超时
connectionTimeout
acceptCount
maxThreads
maxProcessors
minProcessors
useURIValidationHack:减少它对一些url的不必要的检查从而减省开销,为提高性能可以设置为false
compression
compressionMinSize:compressionMinSize="2048" 启用压缩的输出内容大小,这里面默认为2KB
compressableMimeType:compressableMimeType:哪些类型需要压缩,默认是text/html,text/xml,text/plain

 enableLookups:

如果希望调用request.getRemoteHost()进行DNS查询,以返回远程客户的实际主机名,将enableLookups设为true。
 
如果希望忽略DNS查询,仅仅返回IP地址,设为false(这样提高了性能)。
缺省情况下,DNS查询是使能的。
 
一句话:是否反查域名,取值为: true 或 false 。为了提高处理能力,应设置为 false

 disableUploadTimeout:

disableUploadTimeout="true",
 
类似于Apache中的keeyalive一样,是否需要tomcat容器单独设置上传时间限制,
这里是不用,还是使用标准的,不去给上传的附件单独做超时设置。

acceptCount:

acceptCount是当线程数达到maxThreads后,后续请求会被放入一个等待队列,这个acceptCount是
这个队列的大小,如果这个队列也满了,就直接refuse connection
 
一句话:acceptCount:当处理任务的线程数达到最大时,接受排队的请求个数,默认100

 maxThreads:

maxThreads:最大线程数,即同时处理的任务个数,默认值为200 
 
 Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数,
 即最大并发数。
 
   保守推荐:600---900

minProcessors:

在 Java中线程是程序运行时的路径,是在一个程序中与其它控制线程无关的、能够独立运行的代码段。它们共享相同的地址空间。
多线程帮助程序员写出CPU最大利用率的高效程序,使空闲时间保持最低,从而接受更多的请求。
通常Windows是1000个左右,Linux是2000个左右。

 compression:

compression :设置是否开启GZip压缩
 
 
  HTTP 压缩可以大大提高浏览网站的速度,它的原理是,在客户端请求网页后,从服务器端将网页文件压缩,再下载到客户端,
由客户端的浏览器负责解压缩并浏览。相对于普通的浏览过程HTML,CSS,Javascript , Text ,它可以节省40%左右的流量。更为
重要的是,它可以对动态生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等输出的网页也能进行压缩,压缩效率惊人。

1.4超时控制

修改conf/web.xml配置文件,设置session-timeout的值(单位:分钟)

注意:

最后不要忘了把8443端口的地方也加上同样的配置,因为如果我们走https协议的话,
我们将会用到8443端口这个段的配置

2.Tomcat之内存优化

  查看%TOMCAT_HOME%\logs文件夹下,日志文件是否有内存溢出错误
1.错误提示:java.lang.OutOfMemoryError: Java heap space
  导致原因:
   Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,有可能导致系统无法运行。
常见的问题是报Tomcat内存溢出错误,Out of Memory(系统内存不足)的异常,从而导致客户端显示500错误,
一般调整Tomcat的使用内存即可解决此问题。
 
 
 
public static void main(String[] args) 
  {
     System.out.println(Runtime.getRuntime().maxMemory()/1024/1024+" M");
     byte[] byteArray = new byte[1*1024*1024*650];
     System.out.println("#######3");
  }

  windows环境下修改:
    “%TOMCAT_HOME%\bin\catalina.bat”文件,在文件开头增加如下设置:
 
 
    set JAVA_OPTS=-Dfile.encoding=UTF-8 -server -Xms1024m -Xmx2048m -XX:NewSize=512m - 
   XX:MaxNewSize=1024m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:MaxTenuringThreshold=10 - 
   XX:NewRatio=2 -XX:+DisableExplicitGC
 

  Linux环境下修改:
  “%TOMCAT_HOME%\bin\catalina.sh”文件,在文件开头增加如下设置:
 
 
  JAVA_OPTS=-Xms2048m -Xmx2048m
2.错误提示:java.lang.OutOfMemoryError: PermGen space
  导致原因:
   PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存
  放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行pre-compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。
  windows环境下修改:
“%TOMCAT_HOME%\bin\catalina.bat”文件,在文件开头增加如下设置:
 
 
 
set JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m - XX:MaxPermSize=256m
  Linux环境下修改:
  “%TOMCAT_HOME%\bin\catalina.sh”文件,在文件开头增加如下设置:
 
 
   export JAVA_OPTS=-Xms256m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m 
   XX:MaxPermSize=256m

猜你喜欢

转载自blog.csdn.net/weixin_43549578/article/details/83865212
今日推荐