Tomcat 工作线程只增不减

txspace 2011-07-26 06:54:46
"http-80-239" daemon prio=6 tid=0x05c1a400 nid=0xcd4 in Object.wait() [0x0945f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.await(JIoEndpoint.java:458)
- locked <0x2b0a8b40> (a org.apache.tomcat.util.net.JIoEndpoint$Worker)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:484)
at java.lang.Thread.run(Thread.java:619)

Locked ownable synchronizers:
- None


使用VisualVM查看tomcat的线程,发现大量类似上面的线程

Overall Thread Count 271
Overall Monitor Count 151
Number of threads waiting for a monitor 0
Number of threads locking a monitor 151
Number of threads sleeping on a monitor 4
Number of deadlocks 0
Number of Monitors without locking threads 0

而且没有任何关于本身程序的信息

tomcat
<Connector port="80" useBodyEncodingForURI="true" URIEncoding = "UTF-8" connectionTimeout="20000" maxThreads="1000" minSpareThreads="30" maxSpareThreads="75" enableLookups="false" maxIdleTime="15000"
acceptCount="100"
disableUploadTimeout="true"/>
的配置是否有问题,还是有其他的原因

...全文
232 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Frank_Lu 2012-03-07
  • 打赏
  • 举报
回复
我也想知道
humanity 2011-07-26
  • 打赏
  • 举报
回复
JIoEndpoint 里面的 IOEndPoint 和 $Worker 这样的名字再加上里面没有你的程序的包名和类名出现那就不是你的程序的问题,IOEndPoint 多那可能是刚才的并发量很大,开启的线程放在池中,当有请求进来时,tomcat 会调用 at org.apache.tomcat.util.net.JIoEndpoint$Worker 的 notify 过程释放锁,这样这个 worker 对于的 JIoEndPoint 就去处理 IO 事件,IO 中的 byte 读取了就相应的会继续后面的 HTTP 请求,它这个 JIoEndPoint 在等待 NIO 异步 socket channel 的 TCP 事件的通知,通知收到了锁自然就解除了。

HeiBoyYang 2011-07-26
  • 打赏
  • 举报
回复
tomcat
lz可以从网上查下最优配置
有关优化方案挺多的

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧