淺談tomcat中間件的優化【轉】


今天來總結一下tomcat的一些優化的方案,由於本人才疏學淺,寫的不好,勿噴!

tomcat對於大多數從事開發工作的童鞋應該不會很陌生,通常做為默認的開發環境來為大家服務,不過tomcat默認的一些配置對於生產環境來說是相當不夠滴,特別對於內存以及線程的配置方面都很有可能成為日后性能的瓶頸。

接下來咱們就聊聊tomcat的優化,從內存以及線程兩個方面來談:

1.內存方面

tomcat的內存優化操作起來就比較簡單了

如果是linux環境的話設置如下:

修改TOMCAT_HOME/bin/catalina.sh,在前面加入

JAVA_OPTS="-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m -Duser.timezone=Asia/Shanghai"

如果是windows環境的話設置如下:

修改TOMCAT_HOME/bin/catalina.bat,在前面加入

set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m

2.線程方面

在server.xml中 有以下配置:

<Connector
 port="8080" protocol="HTTP/1.1" maxThreads="600" minSpareThreads="100" 
maxSpareThreads="500" acceptCount="700"connectionTimeout="20000" />

先來了解一下各屬性內容:

maxThreads="X" 表示最多同時處理X個連接

minSpareThreads="X" 初始化X個連接

maxSpareThreads="X" 表示如果最多可以有X個線程,一旦超過X個,則會關閉不在需要的線程

acceptCount="X" 當同時連接的人數達到maxThreads時,還可以排隊,隊列大小為X.超過X就不處理

這里是http connector的優化,如果使用apache和tomcat做集群的負載均衡,並且使用ajp協議做apache和tomcat的協議轉發,那么還需要優化ajp connector。

<Connector
 port="8009" protocol="AJP/1.3" maxThreads="600" minSpareThreads="100" 
maxSpareThreads="500" acceptCount="700"connectionTimeout="20000" 
redirectPort="8443" />

由於tomcat有多個connector,所以tomcat線程的配置,又支持多個connector共享一個線程池。

首先。打開/conf/server.xml,增加

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="20" maxIdleTime="60000" />

最大線程500(一般服務器足以),最小空閑線程數20,線程最大空閑時間60秒。

然后,修改<Connector ...>節點,增加executor屬性,executor設置為線程池的名字:

<Connector
 executor="tomcatThreadPool" port="80" protocol="HTTP/1.1" 
connectionTimeout="60000" keepAliveTimeout="15000" 
maxKeepAliveRequests="1" redirectPort="443" />

可以多個connector公用1個線程池,所以ajp connector也同樣可以設置使用tomcatThreadPool線程池。

 

轉自

淺談tomcat中間件的優化

https://www.toutiao.com/i6499659893543272974/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM