Tomcat 性能优化-1

<Connector 
port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false"
redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" />

maxHttpHeaderSize:HTTP请求和响应头的最大量,以字节为单位,默认值为4096字节

maxThreads="150" :允许最多的线程数

minSpareThreads:设当连接器第一次启协创建线程的数目,确保至少有这么多的空闲线程可用。默认值为4

maxSpareThreads:允许存在空闲线程的最大数目,默认值为50

enableLookups:调用request、getRemoteHost()执行DNS查询,以返回远程主机的主机名,如果设置为false,则直接返回IP地址。

redirectPort:如连接器不支持SSL请求,如收到SSL请求,Catalina容器将会自动重定向指定的端口号,让其进行处理。

acceptCount:当所有的可能处理的线程都正在使用时,在队列中排队请求的最大数目。当队列已满,任何接收到的请求都会被拒绝,默认值为10

isableUploadTimeOut:允许Servlet容器,正在执行使用一个较长的连接超时值,以使Servlet有较长的时间来完成它的执行,默认值为false

URIEncoding,用于解码URI查询参数,默认为false

<Engine>元素:
<Engine name=”Cataline” defaultHost=”localhst”>

为特定的Service处理所有的请示。每个Service只能包含一个Engine元素,它负责接收和处理此Service所有的连接器收到的请求,向连接发回响应,

并最终显示在客户端。<Engine>至少有一个<Host>元素,必须至少有一个<Host>属性的名字与defaultHost指定的名字相匹配。

name:指定Engine的逻辑名字(必须)

defaultHost:默认主机名,值必须与<Service>的name值相匹配

className:实现org.apache.catalina.Engine接口,默认实现类为org.apache.catalina.core.StandardEngine类

jvmRoute:在负载匀衡中使用的标识符,必须唯一

<Host>元素:
<Host name=”localhst” appBase=”webapps” unpackWARs=”true” autoDeploy=”true” xmlValidation=”false”
 xmlNamespaceAware=”false”>

appBase:设定应用程序的基目录,绝对路径或相对于%CATALINA_HOME%的路径名

autoDeploy:指示Tomcat运行时,如有新的WEB程序加开appBase指定的目录下,是否为自动布署,默认值为true

name:虚拟主机的网络名(必须)

unPackWARs:虚拟主机指定临时读写使用的目录的路径名,不设,Tomcat会在%CATALINA_HOME%/work目录下提供一个合适的目录。

<context>元素:
<Content path=”/ouser-web” docBase="ouser-web" reloadable=”true” />

path:指定上下文路径。一个虚拟主机中,上下文路径必须唯一

docBase:绝对路径或相对于Host的appBase 属性的相对路径

reloadable:为true,Tomcat运行时,如果WEB-INF/classes和WEB-INF/lib目录中有改变,Tomcat会自动重新加载该WEB应用程序。

虽方便,但开销也大,默认值为false,我们在调用可以打开,发布后再关闭。

Tomcat 性能优化方案

一. 提高JVM栈内存Increase JVM heap memory

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8  
    -server -Xms1024m -Xmx1024m  
    -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m  
    -XX:MaxPermSize=512m -XX:+DisableExplicitGC"  
    
-Xms – 指定初始化时化的栈内存
-Xmx – 指定最大栈内存
在重启你的Tomcat服务器之后,这些配置的更改才会有效。    一般他们的值是相通的


二. 解决JRE内存泄漏

Tomcat版本6.0.26及以上 包含了一个监听器来处理JRE和PermGen的内存泄漏
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />  

三. 线程池设置

线程池指定Web请求负载的数量
<Connector port="8080" address="localhost"  
2   maxThreads="250" maxHttpHeaderSize="8192"  
3   emptySessionPath="true" protocol="HTTP/1.1"  
4   enableLookups="false" redirectPort="8181" acceptCount="100"  
5   connectionTimeout="20000" disableUploadTimeout="true" /> 
这指定可以由服务器处理的并发请求的最大数量。如果没有指定,这个属性的默认值为“200 
任何多出的并发请求将收到“拒绝连接”的错误提示,直到另一个处理请求进程被释放。错误看起来如下,
org.apache.tomcat.util.threads.ThreadPool logFull SEVERE: All threads (250) are  
currently busy, waiting. Increase maxThreads (250) or check the servlet status  
如果应用提示上述错误,务必检查上述错误是否是由于单个请求花费太长时间造成的,这个问题的原因是这样的,
有时候如果数据库连接不释放的话,进程将不会处理其它请求。  

四. 压缩

omcat有一个通过在server.xml配置文件中设置压缩的选项。压缩可以在connector像如下设置中完成,
 <Connector port="8080" protocol="HTTP/1.1"  
   connectionTimeout="20000"  
   redirectPort="8181" compression="500"  
   compressableMimeType="text/html,text/xml,text/plain,application/octet-stream" /> 
在前面的配置中,当文件的大小大于等于500bytes时才会压缩。如果当文件达到了大小但是却没有被压缩,
那么设置属性compression="on"。否则Tomcat默认设置是“off”。

设置TOMCAT的GZIP压缩

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

Tomcat5.0以后支持
修改%TOMCAT_HOME%/conf/server.xml,修订节点如下:
<Connector port="80" protocol="HTTP/1.1"     
        connectionTimeout="20000"     
        redirectPort="8443" executor="tomcatThreadPool" URIEncoding="utf-8"     
                    compression="on"     
                    compressionMinSize="50" noCompressionUserAgents="gozilla, traviata"     
                    compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" />  
从上面节点的属性可以看出,要使用gzip压缩功能,你需要在Connector节点中加上如下属性
1. compression="on" 打开压缩功能 
2. compressionMinSize="50" 启用压缩的输出内容大小,默认为2KB   
3. noCompressionUserAgents="gozilla, traviata" 对于以下的浏览器,不启用压缩    
4. compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" 哪些资源类型需要压缩  
备注:如果发现内容没有被压缩,可以考虑调整compressionMinSize大小,如果请求资源小于这个数值,则不会启用压缩。

原创文章,作者:心肝坏了,如若转载,请注明出处:http://www.178linux.com/41926

(0)
心肝坏了心肝坏了
上一篇 2016-09-19
下一篇 2016-09-19

相关推荐

  • 编程命名中的7+1个提示

    前几天Neo写过《编程中的命名设计那点事》,这里也有另外一篇和程序命名的文章,可以从另一个角度看看。 1.- 变量应该是尽可能的望文知意。千万不要使用教材中的命名方式。 好的变量: daysDateRange, flightNumber, carColor. 坏的变量: days, dRange, temp, data, aux… 在我们…

    Linux干货 2015-04-03
  • 对防火墙的初步认识

      防火墙,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘。而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP、数据进行检测。    目前市面上比较常见的有3、4层的防火墙,叫网络层的防火墙,还有7…

    Linux干货 2017-06-15
  • 配置yum服务器——以centOS 6.9系统为例

    准备工作 关闭防火墙  关闭防火墙service iptables stop  设置防火墙开机不启动chkconfig iptables off  查看一下防火墙状态 iptables -vnL 如下图,可以看到已经关闭 关闭SElinux 使用命令 vim /etc/selinux/config 将SELINUX=enable…

    Linux干货 2017-08-05
  • SSH原理与运用:远程登录

    如果本地用户名与远程用户名一致,登录时可以省略用户名。 1 $ ssh host SSH的默认端口是22,也就是说,你的登录请求会送进远程主机的22端口。使用p参数,可以修改这个端口。 1 $ ssh –p 2222 user@host 上面这条命令表示,ssh直接连接远程主机的2222端口。 三、中间人攻击 SSH之所以能够保证安全,原因在于它…

    Linux干货 2017-08-14
  • 手动自制Mini Linux

        linux系统内核非常的精简,而且基于一切皆文件的思想,使得我们可以再现有系统上挂载一个空硬盘,利用现有系统编译一个内核和相关程序文件并拷贝到空硬盘上。我们就可以用空硬盘来单独运行一个精简的linux系统,这对于依赖于注册表的windows系统来说是不可能实现的。本文简要介绍一下一个mini linux的安装制…

    Linux干货 2016-05-03
  • 马哥教育网络班21期-第六周课程练习

    第六周作业 请详细总结vim编辑器的使用并完成以下练习题 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; [root@qq tmp]# cp /etc/rc.d/rc.sysinit /tmp [root@qq&nbsp…

    Linux干货 2016-08-02