一.Tomcat記憶體優化
T omcat記憶體優化主要是對 tomcat 啟動參數優化,我們可以在 tomcat 的啟動腳本 catalina.sh 中設定JAVA_OPTS 參數。
1.JAVA_OPTS參數說明
Java代碼
- -server 啟用jdk 的 server 版;
- -Xms java虛拟機初始化時的最小記憶體;
- -Xmx java虛拟機可使用的最大記憶體;
- -XX:PermSize 記憶體永久保留區域
- -XX:MaxPermSize 記憶體最大永久保留區域
伺服器參數配置
現公司伺服器記憶體一般都可以加到最大2G ,是以可以采取以下配置:
Java代碼
- JAVA_OPTS='-Xms1024m -Xmx2048m -XX:PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=256m'
配置完成後可重新開機Tomcat ,通過以下指令進行檢視配置是否生效:
1. 首先檢視Tomcat 程序号:
Xml代碼
- sudo lsof -i:9027
我們可以看到Tomcat 程序号是 12222 。
1. 檢視是否配置生效:
Xml代碼
- sudo jmap – heap 12222
我們可以看到MaxHeapSize 等參數已經生效。、
二.Tomcat并發優化
1.Tomcat連接配接相關參數
在Tomcat 配置檔案 server.xml 中的 <Connector ... /> 配置中
1.參數說明
minProcessors:最小空閑連接配接線程數,用于提高系統處理性能,預設值為 10
maxProcessors:最大連接配接線程數,即:并發處理的最大請求數,預設值為 75
acceptCount:允許的最大連接配接數,應大于等于 maxProcessors ,預設值為 100
enableLookups:是否反查域名,取值為: true 或 false 。為了提高處理能力,應設定為 false
connectionTimeout:網絡連接配接逾時,機關:毫秒。設定為 0 表示永不逾時,這樣設定有隐患的。通常可設定為30000 毫秒。
其中和最大連接配接數相關的參數為maxProcessors 和 acceptCount 。如果要加大并發連接配接數,應同時加大這兩個參數。
web server允許的最大連接配接數還受制于作業系統的核心參數設定,通常 Windows 是 2000 個左右, Linux 是 1000個左右。
2.Tomcat中的配置示例
Xml代碼
- <Connector port="9027"
- protocol="HTTP/1.1"
- maxHttpHeaderSize="8192"
- minProcessors="100"
- maxProcessors="1000"
- acceptCount="1000"
- redirectPort="8443"
- disableUploadTimeout="true"/>
2.調整連接配接器connector的并發處理能力
1.參數說明
maxThreads 客戶請求最大線程數
minSpareThreads Tomcat初始化時建立的 socket 線程數
maxSpareThreads Tomcat連接配接器的最大空閑 socket 線程數
enableLookups 若設為true, 則支援域名解析,可把 ip 位址解析為主機名
redirectPort 在需要基于安全通道的場合,把客戶請求轉發到基于SSL 的 redirectPort 端口
acceptAccount 監聽端口隊列最大數,滿了之後客戶請求會被拒絕(不能小于maxSpareThreads )
connectionTimeout 連接配接逾時
minProcessors 伺服器建立時的最小處理線程數
maxProcessors 伺服器同時最大處理線程數
URIEncoding URL統一編碼
2.Tomcat中的配置示例
Xml代碼
- <Connector port="9027"
- protocol="HTTP/1.1"
- maxHttpHeaderSize="8192"
- maxThreads="1000"
- minSpareThreads="100"
- maxSpareThreads="1000"
- minProcessors="100"
- maxProcessors="1000"
- enableLookups="false"
- URIEncoding="utf-8"
- acceptCount="1000"
- redirectPort="8443"
- disableUploadTimeout="true"/>
3.Tomcat緩存優化
1.參數說明
c ompression 打開壓縮功能
compressionMinSize 啟用壓縮的輸出内容大小,這裡面預設為2KB
compressableMimeType 壓縮類型
connectionTimeout 定義建立客戶連接配接逾時的時間. 如果為 -1, 表示不限制建立客戶連接配接的時間
2.Tomcat中的配置示例
Xml代碼
- <Connector port="9027"
- protocol="HTTP/1.1"
- maxHttpHeaderSize="8192"
- maxThreads="1000"
- minSpareThreads="100"
- maxSpareThreads="1000"
- minProcessors="100"
- maxProcessors="1000"
- enableLookups="false"
- compression="on"
- compressionMinSize="2048"
- compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
- connectionTimeout="20000"
- URIEncoding="utf-8"
- acceptCount="1000"
- redirectPort="8443"
- disableUploadTimeout="true"/>
4.參考配置
1.舊有的配置
參考網絡對伺服器做過如下配置,拿出來分享下:
Xml代碼
- <Connector port="9027"
- protocol="HTTP/1.1"
- maxHttpHeaderSize="8192"
- maxThreads="1000"
- minSpareThreads="25"
- maxSpareThreads="75"
- enableLookups="false"
- compression="on"
- compressionMinSize="2048"
- compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
- connectionTimeout="20000"
- URIEncoding="utf-8"
- acceptCount="200"
- redirectPort="8443"
- disableUploadTimeout="true" />
後來發現在通路量達到3 百萬多的時候出現性能瓶頸。
2.更改後的配置
Xml代碼
- <Connector port="9027"
- protocol="HTTP/1.1"
- maxHttpHeaderSize="8192"
- maxThreads="1000"
- minSpareThreads="100"
- maxSpareThreads="1000"
- minProcessors="100"
- maxProcessors="1000"
- enableLookups="false"
- compression="on"
- compressionMinSize="2048"
- compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
- connectionTimeout="20000"
- URIEncoding="utf-8"
- acceptCount="1000"
- redirectPort="8443"
- disableUploadTimeout="true"/>
性能有待觀察中 ……