开发者社区> 问答> 正文

struts2高并发cpu爆满,服务器无法接收请求,客户端显示连接超时,求助

落地花开啦 2016-05-30 13:35:26 1289

最近开发的一个struts2+spring的接口项目,没有页面,只提供接口,action对象委托给spring,不单例,每次请求都会创建新的action。
tomcat优化后,可以接收1000+的请求。项目部署在linux上。
测试时,用HttpURLConnection连接接口,启动1000个线程同时访问,两端都设置超时时间为60s,但是常常在30s左右的时候抛出连接超时的异常。
发现服务端在接收请求时,cpu基本满额,内存还有较多空闲,由于接口返回的数据全部来之缓存,不读取数据库,输出的接口耗时基本在100毫秒内(线程少时,速度快)。
问题如题,没理由这么多用struts2的项目就我这个出这个问题,请问各位通常怎样解决的,或者是我其他地方有问题,在线等,不胜感激
之前测试过,每隔10ms发起一次请求,能够顺利完成,但是用户发起请求无法确定--!
这是我tomcat的线程配置

<Executor maxThreads="500" minSpareThreads="128" acceptCount="1000"
                name="tomcatThreadPool" namePrefix="catalina-exec-" />
 <Connector URIEncoding="utf-8"
                compressableMimeType="text ml,text/xml,text/javascript,text/css,text/plain,application/json,application/x-www-form-urlencoded"
                compression="on" compressionMinSize="256" connectionTimeout="20000"
                executor="tomcatThreadPool" noCompressionUserAgents="" port="8080"
                protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8443" />
 panxuanfan panxuanfan
XML JSON 缓存 前端开发 Java 应用服务中间件 Linux 数据库 数据格式 Spring
分享到
取消 提交回答
全部回答(1)
  • 落地花开啦
    2019-07-17 19:20:25

    jvm工具调试一下,看看cpu是什么线程,哪行代码占用。
    ps -mp pid -o THREAD,tid,time 看看是哪个线程占用cpu
    jstack pid 打印jvm当前线程信息,定位到占用cpu的代码。

    0 0

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题