锁定老帖子 主题:服务器经常ping不通,重启才能恢复正常
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-01-22
内存: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。 这个问题反复出现(头不是一般地痛) 不明白的是为它提供数据库服务的另一台同机房的机器则不会出现,难道数据连接异常引起的问题,会导致本机的网络阻塞吗? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-01-23
早上访问不了javaeye
|
|
返回顶楼 | |
发表时间:2007-01-23
写个脚本定时给操作系统做快照 看进程数(ps),打开的文件数(lsof)和打开的端口(netstat)
死了之后分析分析下快照日志 如果socket被占完了 IP stack就有大麻烦了 ICMP自然不通了 很明显线程池里有死锁 在开发环境调试下看 |
|
返回顶楼 | |
发表时间:2007-01-23
是否路由器的路由表有问题?
|
|
返回顶楼 | |
发表时间:2007-01-23
得看看你 web服务器的 资源利用情况, 首先应该排除的是程序中的 数据库连接 有没有 占用太多服务器资源导致系统当掉(我就遇到过不用数据库连接池的系统,想开就开,开得爽快! ),ping不通也不一定是网络的事啊,服务器自己都当掉了怎么还能ping通。
|
|
返回顶楼 | |
发表时间:2007-01-23
Dear jigsaw:
非常感谢您提供的方法。 另外,是不是这样的情况会造成网络无法访问呢? |
|
返回顶楼 | |
发表时间: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" /> |
|
返回顶楼 | |
发表时间:2007-01-23
peter.kong 写道 两台机器(一台web server,另一台为它提供数据库服务)托管在同一个电信机房
机器没有当掉,前面出现问题的时候,机房的人看了,说机器没什么问题,但是ping ip死都不通 机房的人?ping不通99%是路由交换机的问题。。。。 |
|
返回顶楼 | |
发表时间:2007-01-23
抛出异常的爱 写道 peter.kong 写道 两台机器(一台web server,另一台为它提供数据库服务)托管在同一个电信机房
机器没有当掉,前面出现问题的时候,机房的人看了,说机器没什么问题,但是ping ip死都不通 机房的人?ping不通99%是路由交换机的问题。。。。 |
|
返回顶楼 | |
发表时间:2007-01-23
>>ping不通99%是路由交换机的问题。。。。
别想当然 如果是路由的问题 为什么服务器重起就好了? 更何况日志里面有明显的警告说线程死锁 >>说我们的系统正常,并没有当机(死机、停机) 那更简单了 让他们看看我说的那几个统计是不是有异常情况 |
|
返回顶楼 | |