首页 技术 正文
技术 2022年11月21日
0 收藏 489 点赞 4,636 浏览 5222 个字

最近在项目中负责Tomcat高并发优化方案写一写新得。

优化1)tomcat默认的并发是75,可以启用线程池根据生产环境硬件设定线程池大小。

  <Executor name=”tomcatThreadPool” namePrefix=”catalina-exec-“

maxThreads=”150″ minSpareThreads=”40″/>

     并在使用时引用线程池。

  并发在150左右     

优化2)tomcat7及之前的版本默认采用BIO,启用NIO模式(NIO与BIO差距自行脑补)

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ‘Heiti SC Light’}
–>

<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

<!–
p.p1 {margin: 0.0px 0.0px 14.0px 0.0px; font: 14.0px Arial; color: #323333}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Arial; color: #323333}
span.s1 {font-kerning: none}
span.s2 {font: 14.0px ‘Heiti SC Light’; font-kerning: none}
–>

  

<!–
p.p1 {margin: 0.0px 0.0px 14.0px 0.0px; font: 14.0px Arial; color: #323333}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Arial; color: #323333}
span.s1 {font-kerning: none}
span.s2 {font: 14.0px ‘Heiti SC Light’; font-kerning: none}
–>

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

<!–
p.p1 {margin: 0.0px 0.0px 14.0px 0.0px; font: 14.0px Arial; color: #323333}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Arial; color: #323333}
span.s1 {font-kerning: none}
span.s2 {font: 14.0px ‘Heiti SC Light’; font-kerning: none}
–>

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)

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo}
span.s1 {font-variant-ligatures: no-common-ligatures}
span.s2 {font: 11.0px ‘Heiti SC Light’; font-variant-ligatures: no-common-ligatures}
–>

配置apache开机自启动

在/etc/rc.local(或者/etc/rc.d/rc.local)中加入如下一下 /opt/apache/bin/apachectl -k start

查看是否正常启动:ps -ef | grep httpd

经过APR优化后并发量轻松破300

—————————–华丽的分割线————————————————————

网卡会成为tomcat吞吐量的瓶颈,下面方法是建议优化linux配置方案

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ‘Courier New’; color: #555555; -webkit-text-stroke: #555555; background-color: #f7f7f7}
span.s1 {font-kerning: none}
span.s2 {font: 12.0px ‘Heiti SC Light’; font-kerning: none}
–>

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的开头添加上,

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #323333; background-color: #f6f6f6}
span.s1 {font-kerning: none}
–>

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

参考地址

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px ‘Heiti SC Light’; color: #323333}
span.s1 {font-kerning: none}
–>

http://wenku.baidu.com/link?url=IWluBNhmZVtnY3zvQBSHbI18gmItJc1wM8ExsYAcLznE1_zWnQID99HATHuiYmBl1PCcVV5rdeXBZttkPcwmMZM95m-aTBgdSMD7Hb2u1ZG

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px ‘Heiti SC Light’; color: #323333}
span.s1 {font-kerning: none}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Arial; color: #323333}
span.s1 {font-kerning: none}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px ‘Heiti SC Light’; color: #323333}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px ‘Heiti SC Light’; color: #323333; min-height: 14.0px}
span.s1 {font-kerning: none}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px ‘Heiti SC Light’; color: #323333}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo}
span.s1 {font-kerning: none}
span.s2 {font-variant-ligatures: no-common-ligatures}
–>

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,029
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,519
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,367
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,146
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,781
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,859