"
一个项目用tomcat作为服务器,主要手机接口。大约500台手机并发量。tomcat里面的busy thread一直在增,直到挂掉。如图:<img src=""http://static.oschina.net/uploads/space/2016/0727/205235_OI0G_588216.png"" alt="""" />
求各位大牛指点。
tomcat server.xml 大致配置如下:
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="5000" maxIdleTime="60000"
minSpareThreads="100"/>
<Connector executor="tomcatThreadPool" port="8090"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="5000" processorCache="50000"
minSpareThreads="100" acceptorThreadCount="8"
enableLookups="false" redirectPort="8443" acceptCount="5000"
connectionTimeout="60000" keepAliveTimeout="60000"
maxKeepAliveRequests="100"
disableUploadTimeout="true"
URIEncoding="UTF-8"
compression="on" compressionMinSize="4096"
/>
"500根本不大,没有达到tomcat的极限的,所以看你业务的。。业务代码有问题,50个不也照样跑满么######的确,代码问题。######一台tomcat 通常分配500个请求的,你可以用nginx 做代理转发,后端起多个tomcat######回复 <a href=""http://my.oschina.net/295117485"" class=""referer"" target=""_blank"">@-Jacen- : 我测试出来windows 下没很大差别######昨天问了一个朋友,说windows下apache比nginx性能高。是这样吗?######超时时间太长了,你这样直接就把服务器拖死了######你说的超时时间是指connectionTimeout 还是keepAliveTimeout######
如何定义高并发?
上线前酝酿一下最高的并发请求数,针对请求数做2/8法则,
压力测试单台容器能支撑多久...
最后建议搞集群把...分担压力.
######nginx在前面,毕竟tomcat并不是为大并发设计的!还有,你的每个请求运行逻辑不要太复杂,不要占用过长时间######500台手机在线,真正的并发约为20-40%之间,一台tomcat完全可以抗的住,修改tomcat的连接数同时看下OS的文件打开数限制,另外开始压缩,最好前面用nginx反向代理######回复 @Eric_林 : 嗯,都不熟悉,到处乱搞。######回复 @-Jacen- : 都差不多,看你哪个更熟悉######windows作为服务器,用apache还是nginx更好?######你这一个processTime 这么久? 最长的半个小时,一台tomcat 请求多了 你不挂 谁挂 ######回复 @-Jacen- : 悲观锁:一旦你数据库处理稍微久 并发量上来 会导致链接不够用,然后任务被拒绝。 乐观锁:会导致很多无效的mysql操作,同样会消耗很多资源。 所以要具体业务场景及根据系统可预想的并发量进行具体分析,一种比较好的方式是用redis协助来做乐观锁,还有一种就是redis的原子性操作是一种更好的方式,再或者用redis的lua方式。反正就是具体业务要具体分析,哈哈哈哈哈######回复 @Ambitor : 为了防止多线程重复都数据库,加了个synchronized锁,结果一段时间就挂了,后来去掉,就好了。现在有个思路通过数据库悲观锁或者乐观锁解决。######回复 @-Jacen- : 还有如果你都是长连接的话,那你可能就要用集群了######回复 @-Jacen- : 我觉得线程5000个是多了,然后空闲存活时间只有60秒。但是JDK的线程池的创建策略是任务队列排不下了再新建线程的,所以如果你的应用规模没达到每秒上百的并发(注意,我说的是并发,不是同时在线) 应该不是问题,所以这个地方问题 应该是你的业务逻辑代码有问题?仔细研究下你们代码是不是有某些问题?不然一个请求怎么这么久。######就是不清楚为啥这个time会这么久。求指点######你搞这么大的线程,线程切换估计都浪费很多cpu了######负载均衡呢######建议前面加nginx( 配置比apache简单),后面改成多个tomcat。"版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。