Tomcat性能调优实战

时间:2024-01-15 20:18:50

今日帮朋友做了tomcat性能调优的实际操作,心得记录一下。

服务器:Windows2017

配置:CPU 4 内存 8G

Tomcat8.0+版本。

压力测试工具:apache-jmeter-4.0 (测试方法参考:https://blog.csdn.net/lan_shu/article/details/55190127)

部署应用后测试tomcat并发性能。

若按tomcat初始配置支持并发数在150左右压力30秒开始出现请求丢失。

后经过tomcat性能调优后tomcat单台并发数支持300,压力30秒左右丢包数0.05%

因此tomcat性能调优还是很重要的一个环节。

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