伺服器所能提供cpu、記憶體、硬碟的效能對處理能力有決定性影響。
(1) 對於高併發情況下會有大量的運算,那麼cpu的速度會直接影響到處理速度。
(2) 內存在大量資料處理的情況下,將會有較大的記憶體容量需求,可以用-xmx -xms -xx:maxpermsize等引數對記憶體不同功能塊進行劃分。我們之前就遇到過記憶體分配不足,導致虛擬機器一直處於full gc,從而導致處理能力嚴重下降。
(3) 硬碟主要問題就是讀寫效能,當大量檔案進行讀寫時,磁碟極容易成為效能瓶頸。最好的辦法還是利用下面提到的快取。
對於靜態頁面最好是能夠快取起來,這樣就不必每次從磁碟上讀。這裡我們採用了nginx作為快取伺服器,將、css、js檔案都進行了快取,有效的減少了後端tomcat的訪問。
另外,為了能加快網路傳輸速度,開啟gzip壓縮也是必不可少的。但考慮到tomcat已經需要處理很多東西了,所以把這個壓縮的工作就交給前端的nginx來完成。可以參考之前寫的《利用nginx加速web訪問》。
除了文字可以用gzip壓縮,其實很多也可以用影象處理工具預先進行壓縮,找到乙個平衡點可以讓畫質損失很小而檔案可以減小很多。曾經我就見過乙個從300多kb壓縮到幾十kb,自己幾乎看不出來區別。
單個伺服器效能總是有限的,最好的辦法自然是實現橫向擴充套件,那麼組建tomcat集群是有效提公升效能的手段。我們還是採用了nginx來作為請求分流的伺服器,後端多個tomcat共享session來協同工作。可以參考之前寫的《利用nginx+tomcat+memcached組建web伺服器負載均衡》。
這裡以tomcat7的引數配置為例,需要修改conf/server.xml檔案,主要是優化連線配置,關閉客戶端dns查詢。
1. 修改/etc/sysctl.cnf檔案,在最後追加如下內容:
net.core.netdev_max_backlog = 32768
net.core.somaxconn = 32768
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 65536
2. 儲存退出,執行sysctl -p生效
Tomcat配置優化經驗
tomcat配置優化經驗 一 去掉對web.xml的監視,把jsp提前編輯成servlet。有富餘物理記憶體的情況,加大tomcat使用的jvm的記憶體 二 伺服器資源 伺服器所能提供cpu 記憶體 硬碟的效能對處理能力有決定性影響。1 對於高併發情況下會有大量的運算,那麼cpu的速度會直接影響到處...
Tomcat 執行緒池的配置與優化
優化連線數,主要是在conf server.xml配置檔案中進行修改。優化執行緒數 找到connectorport 8080 protocol http 1.1 增加maxthreads和acceptcount屬性 使acceptcount大於等於maxthreads 如下 ps maxthread...
Tomcat併發優化
在 tomcat 配置檔案 server.xml maxthreads tomcat 使用執行緒來處理接收的每個請求。這個值表示 tomcat 可建立的最大的執行緒數。預設值 150。acceptcount 指定當所有可以使用的處理請求的執行緒數都被使用時,可以放到處理佇列中的請求數,超過這個數的請...