关于tomcat8在windows2008下高并发下问题的解决方案
因為客戶服務器特殊的環境問題,只能使用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將<Connector port="8080" protocol="HTTP/1.1"修改為<Connectorport="8080"protocol="org.apache.coyote.http11.Http11NioProtocol"
4、優化jar包,如果一個jar文件出現在多個WEB應用中的話,可以將該jar文件統一放到一個目錄下,以 避免被tomcat 多次加載,耗用內存占用。方法是:
修改:/conf/catalina.properties文件
將:
common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar"后面增加:"${catalina.home}/share/lib/*.jar"
然后將共用的jar文件放到tomcat下share目錄里的lib文件夾里即可。
5、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中增加一行:<Resources cachingAllowed="false"></Resources>
6、設置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位的操作系統了。
7、設置tomcat最大并發數,方法:修改conf/server.xml,在Connector下增加以下代碼:maxThreads="1000" minSpareThreads="100" maxSpareThreads="300" ?acceptCount="100"?
以下是我的配置:
[html]?view plaincopy?
因為大多數時候JSP程序都是部署在linux下,沒有想到windows下會有這么多問題,以上是經過測試后的時候,網站在高訪問量下沒有再出問題。另外經過測試在windows服務器下,使用apache+tomcat集成的方法也不好。對于并發的連接數支持還不如純tomcat。
轉載于:https://www.cnblogs.com/zfswff/p/4775680.html
總結
以上是生活随笔為你收集整理的关于tomcat8在windows2008下高并发下问题的解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android .mk文件语法解析
- 下一篇: Awk中调用shell命令