论坛首页 Java企业应用论坛

服务器经常ping不通,重启才能恢复正常

浏览 17286 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-01-22  
处理器:2.8G
内存:2G
web server: tomcat5.5
jdk: 1.5

提供自己的web服务(一个网站),托管于电信机房,但是过十几个小时就会出现服务器ping不通,
好像停机一样,重启之后正常(同一机房的另一台提供数据库服务的机器则不会出现),
查看web logger,有些数据连接(使用c3p0,web只用struts)异常如下:
com.microsoft.sqlserver.jdbc.SQLServerException: 该连接已关闭。
...

//其他异常
com.mchange.v2.async.ThreadPoolAsynchronousRunner WARN  - 
com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@a44f17 
-- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
com.mchange.v2.async.ThreadPoolAsynchronousRunner WARN 
- com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@a44f17 
-- APPARENT DEADLOCK!!! Complete Status: num_managed_threads: 3, num_active: 3; 
activeTasks: com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@db16d9 
(com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0), 
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@1b9396a 
(com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1),
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@168987a 
(com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2); 
pendingTasks: com.mchange.v2.c3p0.stmt.GooGooStatementCache$1@1f28e01,
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@148fe4b, 
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@12f2c22,
com.mchange.v2.c3p0.stmt.GooGooStatementCache$1@1fa8047, 
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@fbba6f,
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@8cdc46, 
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@1d1a201,
com.mchange.v2.c3p0.stmt.GooGooStatementCache$1@1e2fef2,
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@1cfd967,
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@ca0253
com.mchange.v2.async.ThreadPoolAsynchronousRunner WARN  - 
Task com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@344a58 
(in deadlocked PoolThread) failed to complete in maximum time 60000ms. Trying interrupt().
com.mchange.v2.async.ThreadPoolAsynchronousRunner WARN  - 
Task com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@fceb00 
(in deadlocked PoolThread) failed to complete in maximum time 60000ms. Trying interrupt().
com.mchange.v2.async.ThreadPoolAsynchronousRunner WARN  - 
Task com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@a86726 
(in deadlocked PoolThread) failed to complete in maximum time 60000ms. Trying interrupt().
com.mchange.v2.async.ThreadPoolAsynchronousRunner WARN  - 
Task com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@db16d9 
(in deadlocked PoolThread) failed to complete in maximum time 60000ms. Trying interrupt().
com.mchange.v2.async.ThreadPoolAsynchronousRunner WARN  - 
Task com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@1b9396a 
(in deadlocked PoolThread) failed to complete in maximum time 60000ms. Trying interrupt().
com.mchange.v2.async.ThreadPoolAsynchronousRunner WARN  - 
Task com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@168987a 
(in deadlocked PoolThread) failed to complete in maximum time 60000ms. Trying interrupt().
com.microsoft.sqlserver.jdbc.SQLServerException: 使用 DBComms.receive 方法期间发生异常。
操作:Connection reset。上下文:(4) Thread Timer-3,5,main , IO:b07ef, Dbc:c0f00 。PktNum:0。TotalReceived:0。PktSize:4,096。


这个问题反复出现(头不是一般地痛)
不明白的是为它提供数据库服务的另一台同机房的机器则不会出现,难道数据连接异常引起的问题,会导致本机的网络阻塞吗?
   发表时间:2007-01-23  
早上访问不了javaeye
0 请登录后投票
   发表时间:2007-01-23  
写个脚本定时给操作系统做快照 看进程数(ps),打开的文件数(lsof)和打开的端口(netstat)

死了之后分析分析下快照日志

如果socket被占完了 IP stack就有大麻烦了 ICMP自然不通了

很明显线程池里有死锁 在开发环境调试下看

0 请登录后投票
   发表时间:2007-01-23  
是否路由器的路由表有问题?
0 请登录后投票
   发表时间:2007-01-23  
得看看你 web服务器的 资源利用情况, 首先应该排除的是程序中的 数据库连接 有没有 占用太多服务器资源导致系统当掉(我就遇到过不用数据库连接池的系统,想开就开,开得爽快! ),ping不通也不一定是网络的事啊,服务器自己都当掉了怎么还能ping通。
0 请登录后投票
   发表时间:2007-01-23  
Dear jigsaw:
非常感谢您提供的方法。
另外,是不是这样的情况会造成网络无法访问呢?
0 请登录后投票
   发表时间:2007-01-23  
两台机器(一台web server,另一台为它提供数据库服务)托管在同一个电信机房

机器没有当掉,前面出现问题的时候,机房的人看了,说机器没什么问题,但是ping ip死都不通

另外,数据库连接池用的是c3p0,设置如下:
<attribute name="JdbcUrl" value="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=dn;SelectMethod=cursor" />
<attribute name="DriverClass" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
<attribute name="UserName" value="sa" />
<attribute name="Password" encrypted="false" value="test" />
<attribute name="AutoCommit" value="true" />
<attribute name="InitialPoolSize" value="10" />
<attribute name="MinPoolSize" value="10" />
<attribute name="MaxPoolSize" value="10" />
<attribute name="MaxStatements" value="20" />


0 请登录后投票
   发表时间:2007-01-23  
peter.kong 写道
两台机器(一台web server,另一台为它提供数据库服务)托管在同一个电信机房

机器没有当掉,前面出现问题的时候,机房的人看了,说机器没什么问题,但是ping ip死都不通


机房的人?ping不通99%是路由交换机的问题。。。。
0 请登录后投票
   发表时间:2007-01-23  
抛出异常的爱 写道
peter.kong 写道
两台机器(一台web server,另一台为它提供数据库服务)托管在同一个电信机房

机器没有当掉,前面出现问题的时候,机房的人看了,说机器没什么问题,但是ping ip死都不通


机房的人?ping不通99%是路由交换机的问题。。。。
公司离托管机房较远,所以只能向电信的机房管理人员询问相关情况,他们说我们的系统正常,并没有当机(死机、停机)
0 请登录后投票
   发表时间:2007-01-23  
>>ping不通99%是路由交换机的问题。。。。

别想当然 如果是路由的问题 为什么服务器重起就好了?
更何况日志里面有明显的警告说线程死锁


>>说我们的系统正常,并没有当机(死机、停机)

那更简单了 让他们看看我说的那几个统计是不是有异常情况
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics