文档章节

每半小时Tomcat不响应

鱼中鱼
 鱼中鱼
发布于 2014/06/05 09:38
字数 433
阅读 2077
收藏 5
点赞 0
评论 0

背景
      应用系统采用javaBean + servlet + c3p0实现。
症状
     每半小时后,Tomcat无响应。
诊断
      1、生成内存快照 jmap -dump:format=b,file=heap.dump 7996,占用内存并不大不到512M
      2、生成线程快照 jstack -l 7996 >d:\jstackl.log

"catalina-exec-88" daemon prio=6 tid=0x494cf800 nid=0x1ebc waiting on condition [0x7119f000]
   java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x14140d30> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.park(Unknown Source)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source)
    at java.util.concurrent.LinkedBlockingQueue.take(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

   Locked ownable synchronizers:
    - None

      线程数不到100,并没有达到Tomcat设置的上限。
    3、无任何异常日志。
    4、检查数据库连接,均已释放。

看似一切正常,这里唯一用到第三方的就是c3p0了,问题难道是在这里吗?
后记
     debug后,发现在无响应后,获取数据库连接时,无响应。看来的确是配置问题。
     有一篇文章引起了我的注意:http://xieshaohu.wordpress.com/2011/04/01/%e8%b7%9f%e8%b8%aa-c3p0-%e8%bf%9e%e6%8e%a5%e6%b1%a0%e8%bf%9e%e6%8e%a5%e6%b3%84%e6%bc%8f/
    抱着尝试性的心理,对unreturnedConnectionTimeout和debugUnretrunedConnectionStackTraces两个参数做了设置。

ds.setUnreturnedConnectionTimeout(30);
ds.setDebugUnretrunedConnectionStackTraces(false);
经观察,在无响后持续30秒后,系统返回正常页面。

问题算是暂时解决了,但这样配置后留下了一点后遗症。

在整个诊断过程中,发生过一次奇怪的异常。

2014-6-4 0:00:27 org.apache.tomcat.util.net.NioEndpoint$Acceptor run
严重: Socket accept failed
java.io.IOException: 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作。
    at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method)
    at sun.nio.ch.ServerSocketChannelImpl.accept(Unknown Source)
    at org.apache.tomcat.util.net.NioEndpoint$Acceptor.run(NioEndpoint.java:1309)
    at java.lang.Thread.run(Unknown Source)

不知道还有没有其它更好的解决方案。

© 著作权归作者所有

共有 人打赏支持
鱼中鱼
粉丝 12
博文 22
码字总数 7321
作品 0
浦东
tomcat线程一直处于RUNNABLE,不接受请求

现在对tomcat一个工程(会通过httpurlconnection去请求别的资源)并发过多时候,tomcat直接跟挂去一样,再输入任何地址都一直不响应。通过java自带的检测工具看到像http-8080-1这样的http线程...

黑面馒头 ⋅ 2013/11/11 ⋅ 6

请教一个java web 方面长时间查询库的问题

请教个问题,web应用,有一个报表需要查询大量数据,查询耗时可能比较长,半小时左右才有结果,查询完成之后在反馈给用户,我有两个思路,求大神指点 思路一 多线程来完成这个工作,启用一个...

江上数峰青 ⋅ 2015/08/20 ⋅ 4

tomcat集群 不能实现负载均衡

下午参照这个配置tomcat集群:http://wenku.baidu.com/view/6c53166048d7c1c708a14538.html …………………………分割线………………………… 下午在本机上搭建有3个tomcat的集群,测试过程中...

liangxiao ⋅ 2012/07/09 ⋅ 2

捉虫经历:weblogic 下调用 getServletContext() 方法报错

原来在 tomcat 下部署的应用没什么问题,今天部署到 weblogic 下,程序跑不起来了,报错信息如下: the method getServletContext() is undefined ps:我在jsp页面中调用了this.getServletCo...

彭苏云 ⋅ 2015/08/18 ⋅ 0

给tomcat部署的网站配置https

场景 公司ios开发需要服务api都基于https,所以最近摸索了一下。 服务器部署在阿里云上,本来想直接找let encrypt 或者 trustAisa 的免费证书。但是搜了一些博客发现,阿里云服务器配置第三方...

jkxqj ⋅ 03/07 ⋅ 0

XMLRPC并发问题

有对xmlrpc熟悉的同学么。 我们一个项目,使用XMLRPC要提供远程接口调用,在高并发下,服务器端根本不响应客户端的请求,客户端报错: [Fatal Error] :1:1: Premature end of file. org.apa...

firebull ⋅ 2014/04/02 ⋅ 4

【2016-06-13】一次BufferReader没有close引发的血案

Hive-Web是我司Web端查询Hive数据的服务,功能上比较简单,用户在Web上写一个SQL,Hive-Web将SQL提交到后端的服务执行查询,得到结果的hdfs路径,然后通过hadoop的fs读取文件,将其返回给用户...

rathan0 ⋅ 2016/06/13 ⋅ 0

Java HeartBeat 1.0.0 发布,心跳检测应用服务器的 Java Web 应用程序

在经历近一年的不知所措后(2016-08-15 到 2017-07-09),更新了 HeartBeat 1.0.0 版本,Java HeartBeat 是心跳检测应用服务器(如 Tomcat,Jetty)的 Java Web 应用程序。 1.0.0 版本主要是功能...

monkeyk7 ⋅ 2017/07/09 ⋅ 5

Netty入门教程(一) 实现DISCARD服务

本文章同步到本人的博客站点 燕归来欢迎访问 官方那个给出的介绍是:Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可...

雁归来兮 ⋅ 06/02 ⋅ 0

mysql连接8小时问题在于

@情天大圣 你好,想跟你请教个问题:java.net.SocketException: Software caused connection abort: socket write error 异常,而我的JDBC连接的配置如下:...

心心相印 ⋅ 2015/08/26 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring表达式语言(SpEL)

1、SpEL引用 Spring EL在bean创建时执行其中的表达式。此外,所有的Spring表达式都可以通过XML或注解的方式实现。下面将使用Spring表达式语言(SpEL),注入字符串,整数,Bean到属性。 SpEL的...

霍淇滨 ⋅ 26分钟前 ⋅ 0

Gradle使用阿里云镜像

gradle 生命周期中有一个初始化( Initialization )的过程,这个过程运行在 build script 之前,我们可以在这个地方做一点系统全局的设置,如配置仓库地址。 你可以在以下几个位置实现仓库地址...

明MikeWoo ⋅ 34分钟前 ⋅ 0

appium+python3.6

1.安装jdk1.8(不知道为啥只识别1.8,1.10不识别,所以为了少折腾,迁就安装1.8) http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 配置 JAVA_HOME:...

Kampfer ⋅ 52分钟前 ⋅ 0

详解Apache 日志分割教程

一、日志切割 安装cronolog CentOS 5.3中编译安装Apache日志默认是不切割的,需要用用工具Cronnolog进行日志切割。 1.下载及安装 wget http://cronolog.org/download/cronolog-1.6.2.tar.gz ...

dragon_tech ⋅ 55分钟前 ⋅ 0

Keepalived介绍

负载均衡器(Load Balancer, LB )是一组能够将IP数据流以负载均衡形式转发到多台物理服务器的集成软件。有硬件负载均衡器和软件负载均衡器之分,硬件负载均衡器主要是在访问网络和服务器之间...

寰宇01 ⋅ 55分钟前 ⋅ 0

java8-Collections and Streams

stream和集合的区别是什么? 1.在计算的时候处理不同, 2.every element should be computed in the memory and then to be part of collections stream Stream apis filter with a predica......

writeademo ⋅ 今天 ⋅ 0

Confluence 6 重新获得附件指南

每一个文件在恢复上传到 Confluence 的时候必须单独重命名,你可以通过下面说明的 3 个方法中选择一个进行操作: 选择 A - 通过文件名恢复附件 如果你知道你需要恢复的每一个文件名,尤其是你...

honeymose ⋅ 今天 ⋅ 0

【每天一个JQuery特效】根据状态确定是否滑入或滑出被选元素

主要效果: 本文主要采用slideToggle()方法实现以一行代码同时实现以展开或收缩的方式显示或隐藏被选元素。 主要代码如下: <!DOCTYPE html><html><head><meta charset="UTF-8">...

Rhymo-Wu ⋅ 今天 ⋅ 0

度量.net framework 迁移到.net core的工作量

把现有的.net framework程序迁移到.net core上,是一个非常复杂的工作,特别是一些API在两个平台上还不能同时支持。两个类库的差异性,通过人工很难识别全。好在微软的工程师们考虑到了我们顾...

李朝强 ⋅ 今天 ⋅ 0

请不要在“微服务”的狂热中迷失自我!

微服务在过去几年一直是一个非常热门的话题(附录1)。何为“微服务的疯狂”,举个例子: 众所周知,Netflix在DevOps上的表现非常棒。Netfix可以做微服务。因此:如果我做微服务,我也将非常...

harries ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部