tomcat高并发配置
最近在項目中負責Tomcat高并發優化方案寫一寫新得。
優化1)tomcat默認的并發是75,可以啟用線程池根據生產環境硬件設定線程池大小。
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="150" minSpareThreads="40"/>
? ? ?并在使用時引用線程池。
并發在150左右? ? ?
優化2)tomcat7及之前的版本默認采用BIO,啟用NIO模式(NIO與BIO差距自行腦補)
<Connector executor="tomcatThreadPool"
?? ? ? ? ? ? ? port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
?? ? ? ? ? ? ? connectionTimeout="20000"
?? ? ? ? ? ? ? redirectPort="8443" />
?
? ? ? 經過這次優化后250的并發量一般是沒問題
?
優化3)APR模式,因為實際生產環境大部分在linux下,所以直說Linux下的安裝
?
(1)先安裝gcc ? (沒有yum命令先安裝yum,sudo apt -get install yum)
yum -y install gcc
?(2)?按裝apr和apr-util
? ? ? ?下載地址http://apr.apache.org/download.cgi
apr-1.3.2.tar.gz安裝:
tar zxvf apr-1.3.2.tar.gz ?
cd apr-1.3.2 ?
./configure ?--prefix=/usr/local/apr
make ?
make install?
?
apr-util-1.3.2.tar.gz 安裝:
tar zxvf apr-util-1.3.2.tar.gz ?
cd apr-util-1.3.2 ?
./configure --prefix=/usr/local/apr-util
make ?
make install ?
?
(3)安裝pcre 下載地址https://sourceforge.net/projects/pcre/files/pcre/
?
unzip?-o?pcre-8.33.zip?#?cd?pcre-8.33?
#?./configure?--prefix=/usr/local/pcre
make?
make install
?
(4)安裝apache? http://httpd.apache.org/download.cgi
tar zxvf?httpd-2.4.25.tar.tz
./configure --prefix=/usr/local/apache --enable-modules=all --enable-mods-shared=all --enable-proxy --enable-proxy-connect --enable-proxy-ftp --enable-proxy-http --enable-proxy-ajp --enable-proxy-balancer --enable-rewrite --enable-status --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --with-pcre=/usr/local/pcre
make
make install
?
(5)
?
配置apache開機自啟動?
在/etc/rc.local(或者/etc/rc.d/rc.local)中加入如下一下?/opt/apache/bin/apachectl?-k?start?
查看是否正常啟動:ps?-ef?|?grep?httpd
?
?
經過APR優化后并發量輕松破300
-----------------------------華麗的分割線------------------------------------------------------------
網卡會成為tomcat吞吐量的瓶頸,下面方法是建議優化linux配置方案
?
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的吞吐量輕松提升200-300
--------------------------------華麗的分割線----------------------------------------------------------------
優化JVM這是少不了的一層。jvm的主要優化GC內存管理、設置堆、棧大小。需要根據實際的生產情況進行設置,以下僅僅是舉例,jvm調優本身就是一門深技術
在%TOMCAT_HOME%/bin/catalina.sh的開頭添加上,
declare -x JAVA_OPTS='-Xms1024M?-Xmx1024M?-Xss512k?-XX:+AggressiveOpts?-XX+UseBiasedLocking?-XX:PermSize=64M?-XX:MaxPermSize=300M?-XX:+DisableExplicitGC?-XX:MaxTenuringThreshold=31?-XX:+UseConcMarkSweepGC?-XX:+UseParNewGC??-XX:+CMSParallelRemarkEnabled?-XX:+UseCMSCompactAtFullCollection?-XX:LargePageSizeInBytes=128m??-XX:+UseFastAccessorMethods?-XX:+UseCMSInitiatingOccupancyOnly?-Djava.awt.headless=true'
-------------------------------華麗的分割線-----------------------------------------------------------------------------
建議:我們在優化的過程中應該多測試,不能僅靠只言片語,我們應該用數據分析總結結論。
?
END
?
?參考地址
http://wenku.baidu.com/link?url=IWluBNhmZVtnY3zvQBSHbI18gmItJc1wM8ExsYAcLznE1_zWnQID99HATHuiYmBl1PCcVV5rdeXBZttkPcwmMZM95m-aTBgdSMD7Hb2u1ZG
?
轉載于:https://www.cnblogs.com/nunuAction/p/6424711.html
總結
以上是生活随笔為你收集整理的tomcat高并发配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: German Companies
- 下一篇: 到你是你玩互联网还是互联网玩了你