tomcat8在windows2008下高并发下问题的解决方案

为什么80%的码农都做不了架构师?>>>   hot3.png

因为客户服务器特殊的环境问题,只能使用windows2008r2服务器,然而配置过后,网站的高访问量很快就出现了各种问题,以下是解决的问题汇总。

服务器环境:windows2008R2+jdk8.0+tomcat8.0.21+sqlserver2008r2(以上软件环境均是64位)

1、首先建议安装jdk8.0(64位)以能获取较高的JVM内存设置,不然网站访问并发过高,内存很快就会出现不足,也就是常说的java heap space不足了。下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

记得一定要选择:jdk-8u45-windows-x64.exejdk-8u45-windows-x64.exejdk-8u45-windows-x64.exe

2、安装64位的tomcat8.0,目前最新版本是apache-tomcat-8.0.21,下载地址:http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.0.21/bin/apache-tomcat-8.0.21-windows-x64.zip

3、修改连接器协议,默认是HTTP/1.1,该默认设置不能支持过高的并发量,不然会出现io错误。方法是修改conf/server.xml将port="8080"protocol="org.apache.coyote.http11.Http11AprProtocol"

4、tomcat8默认会缓存图片资源,当并发过高时,会提示warn信息: WARNING [http-nio-80-exec-43] org.apache.catalina.webresources.Cache.getResource Unable to add the resource at.....,这个本身没有什么问题,只是不断在日志中写入信息,日志文件不断增加,感觉不好,干脆设置不缓存,方法是:

修改META-INF下的context.xml文件,在Context中增加一行:

5、设置jvm较大内存,编辑bin/catalina.bat,找到以下代码段:rem Guess CATALINA_HOME if not defined,在其上面增加代码:

set JAVA_OPTS=-Xms512m -Xmx4096m -XX:PermSize=128M -XX:MaxPermSize=256m

这里设置的Xmx为4G内存,如果安装的不是64位的JDK,那么在设置最大内存的时候,就会提示不支持(好像最多能设置到1G多点,要知道服务器内存是64G啊,!!!)。所以第一步为什么安装64位的操作系统了。

6、以下是我的配置:

搜索【开户线程池,开启并调整为 

        maxThreads="1000" maxIdleTime="60000"  minSpareThreads="20"/> 

搜索【port="8080"】,调整为 

   

        executor="tomcatThreadPool"

        compression="on"

        compressionMinSize="2048"

noCompressionUserAgents="gozilla, traviata"

compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,application/json,application/x-javascript" 

        maxThreads="30000"

        minSpareThreads="512"

        maxSpareThreads="2048"

        enableLookups="false"

        redirectPort="8443"

        acceptCount="35000"

        debug="0"

        connectionTimeout="40000"

        disableUploadTimeout="true" URIEncoding="UTF-8" useBodyEncodingForURI="true"/>

说明 :executor=" tomcatThreadPool"   //开启线程池

    protocol="org.apache.coyote.http11. Http11AprProtocol//开启Apr协议,需要安装Apr支持 
     enableLookups="false" redirectPort="8443" //关闭反向查询 
     compression="on" compressionMinSize="4096" //开启静态文件压缩 
     noCompressionUserAgents="gozilla, traviata" //开启静态文件压缩 
     compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,application/json,application/x-javascript " //开启静态文件压缩

因为大多数时候JSP程序都是部署在linux下,没有想到windows下会有这么多问题,以上是经过测试后的时候,网站在高访问量下没有再出问题。另外经过测试在windows服务器下,使用apache+tomcat集成的方法也不好。对于并发的连接数支持还不如纯tomcat。

转载于:https://my.oschina.net/glenxu/blog/472507

你可能感兴趣的:(tomcat8在windows2008下高并发下问题的解决方案)