今日幫朋友作了tomcat性能調優的實際操做,心得記錄一下。redis
服務器:Windows2017apache
配置:CPU 4 內存 8Gtomcat
Tomcat8.0+版本。服務器
壓力測試工具:apache-jmeter-4.0 (測試方法參考:https://blog.csdn.net/lan_shu/article/details/55190127)cookie
部署應用後測試tomcat併發性能。網絡
若按tomcat初始配置支持併發數在150左右壓力30秒開始出現請求丟失。session
後通過tomcat性能調優後tomcat單臺併發數支持300,壓力30秒左右丟包數0.05%併發
所以tomcat性能調優仍是很重要的一個環節。tcp
Tomcat性能調優相關參數:工具
fs.file-max = 655350 # 系統文件描述符總量
net.ipv4.ip_local_port_range = 1024 65535 # 打開端口範圍
net.ipv4.tcp_max_tw_buckets = 2000 # 設置tcp鏈接時TIME_WAIT個數
net.ipv4.tcp_tw_recycle = 1 # 開啓快速tcp TIME_WAIT快速回收
net.ipv4.tcp_tw_reuse = 1 # 開啓TIME_WAIT重用
net.ipv4.tcp_syncookies = 1 # 開啓SYN cookies 當出現syn等待溢出,啓用cookies來處理,可防範少許的syn攻擊
net.ipv4.tcp_syn_retries = 2 # 對於一個新建的tcp鏈接,內核要發送幾個SYN鏈接請求才決定放棄
net.ipv4.tcp_synack_retries = 2 # 這裏是三次握手的第二次鏈接,服務器端發送syn+ack響應 這裏決定內核發送次數
net.ipv4.tcp_keepalive_time = 1200 # tcp的長鏈接,這裏注意:tcp的長鏈接與HTTP的長鏈接不一樣
net.ipv4.tcp_fin_timeout = 15 # 設置保持在FIN_WAIT_2狀態的時間
net.ipv4.tcp_max_syn_backlog = 20000 # tcp半鏈接最大限制數
net.core.somaxconn = 65535 # 定義一個監聽最大的隊列數
net.core.netdev_max_backlog = 65535 # 當網絡接口比內核處理數據包速度快時,容許送到隊列數據包的最大數目
本人配置:
<Connector port="8080" protocol="HTTP/1.1"
maxThreads="1000"
minProcessors="50"
maxProcessors="2000"
minSpareThreads="100"
maxSpareThreads="1000"
enableLookups="false"
URIEncoding="utf-8"
acceptCount="1000"
connectionTimeout="20000"
disableUploadTimeout="ture"
redirectPort="8443" />
-------------------------------------------------------------------------------------------------------------------------
我的建議以上服務器配置可拆爲兩臺經過ngixn+tomcat集羣,redis作session共享:(對於技術初學者來講仍是採用上面方法比較簡單)
服務器:Windows2017
配置:CPU 2 內存 4G