一个DLOG4J博客网站频繁宕机的问题解决

红薯 发布于 2009/10/19 18:01
阅读 636
收藏 3

这是一个特例,可能不具备普遍的参考意义。

网站http://www.dlog.cn
系统:Linux + MySQL + Tomcat + Nginx + (DLOG4J)
现象频繁宕机,网页无法打开,在服务器上测试 Tomcat 的HTTP端口无响应,Nginx 和 MySQL 正常。这种现象最近几天几乎每天都要出现四五次,每次只能重启Tomcat才能恢复。

处理方法

1. 写一个简单页面 thread.jsp,用于罗列Tomcat虚拟机中所有线程名称以及运行状态;
2. 打开全局Filter的调试输出,在日志中打印每个请求对应的线程名称对应的URI 线程状态

然后开始一整天的监控过程,一直刷这个 thread.jsp 看看哪些线程(http-8081-exec-xxxx)一直处于 Runnable 状态,如果一直是 Runnable 状态,那么100%这个线程已经挂住了。接下来到 Tomcat 的日志中去查找这个线程是在处理什么页面的时候挂掉的。

一直重复以上的过程后发现,所有导致挂机的页面都是该网站的手机wap页面。检查这些页面,并把页面复杂逻辑暂时屏蔽发现问题依旧。苦苦思索到底是什么原因导致页面响应变慢,甚至一个很简单的页面都会堵塞呢???

然后就想起了 Google 的 WAP 嵌入式广告,打开广告的全局页面并注释掉广告信息后,监控页面中 Runnable 的线程数就降低到只有1-2个,响应速度也是非常的快。问题找到!

这个问题跟这两天 Google 的WAP广告服务器响应慢是有直接联系的。看来对嵌入的广告也应该缓存一下,定时更新,而不是每个访问来都去请求广告代码。这个问题只是在这两天才出现,而之前运行一直很好。

加载中
0
虫虫
虫虫

有时候我在想网站加入Google Analytics 的代码会不会导致页面加载变慢?

0
红薯
红薯

那不会,因为 Google Analytics 的代码是用 JS 嵌入到页面,是由浏览器执行的,就算崩溃了,也是用户的浏览器崩溃。不会影响服务器。

0
JavaGG
JavaGG

罗列应用中所有线程名称以及运行状态;

这种方法一直在用,找应用没有响应的最好方法,一看就知那里出问题了

返回顶部
顶部