|
您目前处于:Architecture
2015-01-23
|
系列文章:今天线上又发现 502 Bad Gateway 的现象,但奇怪的是没有方法可用率报警,检查发现,线程数上线,但没有方法异常! 在毫无头绪之际,突然想到查看 jstack,日志如下:
发现程序的线程全部处于 BLOCKED 状态!等了一会,在查看 jstack,日志如下:
发现 BLOCKED 状态消失了,都变成了 TIMED_WAITING 状态! 仔细分析日志,发现线程都在 waiting for 同一个地址空间,这说明程序里使用了锁! 查看程序原代码,示例代码如下: public void connect(String session) throws Exception {
final ReentrantLock runLock = this._lock;
runLock.lock();
try {
doSomething();
} finally {
runLock.unlock();
}
}由于使用了锁,重启堆积的线程数造成了资源抢占,所以同样造成了之前的影响! 本文受原创保护,未经作者授权,禁止转载。 linkedkeeper.com (文/张松然) ©著作权归作者所有 |