最近由于项目马上要上线,于是开始一系列优化压测.一期要承接2.5w的并发量.所以后端部署了18台tomcat
但是刚开是非常差强人意.找到错误分析员因发现打开文件过多.于是开始一系列的系统内核优化
6台机器部署tomcat 每台机器部署3个实例 机器配置如下 32核/64G内存/100G存储
压测机器配置 4路8核 512G内存 1*12T储存
采用jmeter进行的压测
先贴下我的tomcat的线程池
[java] view plain copy
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="2000" minSpareThreads="1000"/>
<Connector executor="tomcatThreadPool" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="2000"
redirectPort="8443" enableLookups="false"
acceptCount="5000" maxThreads="2000"
compression="on" compressionMinSize="2048"
maxConnections="10000"
URIEncoding="utf-8" />
和jvm配置
[java] view plain copy
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8
-server -Xms16384m -Xmx16384m
-XX:NewSize=1024m -XX:MaxNewSize=1024m -XX:PermSize=1024m
-XX:MaxPermSize=1024m <span style="color:rgb(79,79,79);text-align:justify;">xx: +disableExplicaitGC</span>"
CATALINA_OPTS="-Djava.library.path=/data/tomcat/tomcat6080/lib"
但是当我压到1.5w的时候发现tomcat报错了
错误: org.apache.tomcat.util.net.NioEndpoint$Poller run
原来此处采坑了 nio模式下与 xx: +disableExplicaitGC是冲突的 于是把这个去掉 .在压还是不行,为啥呢?一打开错误日志,卧槽 系统内核参数回去了.
刚开始我没有改配置文件,直接在线改的,中途退出登录了,参数又回去了,于是又该一边内核参数,直接压2.5w
效果还可以吧 ,单压6个节点可以压到1.2w 基本上一个tomcat可以撑住2千并发量.
\