tomcat生产集群环境性能问题
2016-04-14 16:08
411 查看
最近生产上进群环境出现系统访问缓慢,甚至出现网络连接超时现象。
问题起因汇总:1,服务器所在物理主机出现ioerror ,后来和云平台同事那边了解到是云主机出现设备故障引起的文件系统损坏。
2,每个集群节点tomcat 并发连接优化,如下:
从官方文档看出:
maxthreads 这个参数配置了tomcat能够开启处理每个http请求的最大线程数,tomcat针对每一个http请求都会开启一个线程去处理。也就是支持的连接并发数。
acceptcount 这个参数配置的是请求等待队列大小,也就是说一个请求过来,如果能够进入这个队列,那么客户端可以处于等待状态,否则队列满了的时候,就会直接被tomcat refuse掉。
综上,这两个参数配置恰当对系统吞吐量影响较大。
3,代码优化
优化代码时候,经过排查代码发现,在数据接口层有个方法使用synchronized
关键字,这是个同步等待标志,所有的线程需要竞争这个资源,等拿到锁后才可以进入执行,这样就导致了,并发环境下多线程等待资源的情况,从而导致系统请求连接不能及时断开,形成长连接,直接导致tomcat的启动的处理连接线程数达到配置的最高值。 从而在负债均衡那边出现心跳检查tomcat的时候出现被拒绝现象。恶性循环,直接导致,系统无比缓慢。
去掉synchronized关键字后,系统明显变快。
综上所描述,这次系统优化成功。
问题起因汇总:1,服务器所在物理主机出现ioerror ,后来和云平台同事那边了解到是云主机出现设备故障引起的文件系统损坏。
2,每个集群节点tomcat 并发连接优化,如下:
tomcat的maxThreads、acceptCount(最大线程数、最大排队数)
从官方文档看出:acceptCount | The maximum queue length for incoming connection requests when all possible request processing threads are in use. Any requests received when the queue is full will be refused. The default value is 100. |
maxThreads | The maximum number of request processing threads to be created by thisConnector, which therefore determines the maximum number of simultaneous requests that can be handled. If not specified, this attribute is set to 200. If an executor is associated with this connector, this attribute is ignored as the connector will execute tasks using the executor rather than an internal thread pool. |
acceptcount 这个参数配置的是请求等待队列大小,也就是说一个请求过来,如果能够进入这个队列,那么客户端可以处于等待状态,否则队列满了的时候,就会直接被tomcat refuse掉。
综上,这两个参数配置恰当对系统吞吐量影响较大。
3,代码优化
优化代码时候,经过排查代码发现,在数据接口层有个方法使用synchronized
关键字,这是个同步等待标志,所有的线程需要竞争这个资源,等拿到锁后才可以进入执行,这样就导致了,并发环境下多线程等待资源的情况,从而导致系统请求连接不能及时断开,形成长连接,直接导致tomcat的启动的处理连接线程数达到配置的最高值。 从而在负债均衡那边出现心跳检查tomcat的时候出现被拒绝现象。恶性循环,直接导致,系统无比缓慢。
去掉synchronized关键字后,系统明显变快。
综上所描述,这次系统优化成功。
相关文章推荐
- Tomcat 的三种(bio,nio.apr) 高级 Connector 运行模式
- solr与tomcat搭建
- tomcat访问主页报404
- Eclipse安装Tomcat
- IDEA每次部署都把部署文件放在哪了?之前的tomcat下的work目录也找不到?
- linux安装tomcat
- Eclipse+Tomcat开发支持热加载的配置方式
- JNDI初探之tomcat的datasource配置
- Tomcat侧对request进行分析
- 关于tomcat服务器重启之后session不失效的问题解决
- android 从tomcat读取文件出错:connect failed: ECONNREFUSED
- JDK、Tomcat、ANT及Eclipse常用配置
- Eclipse创建Tomcat时Next按钮是灰色,解决方案!
- tomcat中catalina是什么
- apache 2.2.15+tomcat6 集群
- 启动tomcat 报 Could not delete D:/online/.metadata/.plugins/org.eclipse.wst.server.core/tm
- Tomcat发布网站修改端口、修改默认发布目录、多域名绑定
- IntelliJ IDEA / Tomcat - 内存溢出/内存优化最佳实践
- Solr与Tomcat的整合
- 更改tomcat配置,解决中文乱码,记录一下