分享一下今天解决的 oschina 访问偶尔会很卡问题的过程

红薯 发布于 2011/12/20 15:46
阅读 2K+
收藏 34

分享之前先对 @范堡 表示感谢,是他分析并解决了此次的问题。

具体现象:

这个问题在最近一段时间感觉特别明显,访问oschina时不时会觉得很卡,排除了网络问题。对数据库也特别进行了监控,慢查询日志基本上都没有执行时间超过1秒的SQL。

Nginx 方面发现最近无效的请求返回400错误的量特别大,详情请看这里

还有另外一个现象就是系统的 iowait 平均值特别高,达 15.8%,相当于说磁盘IO超负荷。

oschina 目前还保留着 nginx 的 access_log 用做统计,这个文件每天有超过500w行数据,难道会是它引起的磁盘IO高负载?将 access_log 移到另外一个空闲的磁盘上,问题依旧没有解决。

另外还发现一个现象:nginx 的 access_log 隔十几秒就会断2秒,也就是说这2秒内的访问记录没有写到日志文件里。

再试试关掉 nginx 的 access_log 日志,依然没有解决。

问题诊断:

nginx 没问题,mysql 没问题,还有可能出现问题的就是 tomcat 了!

tomcat 没理由会造成磁盘IO高啊,除了 ehcache

ehcache 会将缓存中的数据交换到磁盘中,排除法猜测是 java 经常造成的高磁盘IO

问题解决:

ehcache 的磁盘数据目录在 tomcat 的 temp 子目录下,@范堡 于是让 oschina 做了他一回小白鼠,删除 temp 目录,直接做了个软链接到 /dev/shm 下

ln -s /dev/shm/tomcat_temp temp

然后先用备用的 tomcat 做测试,启动、访问测试一切正常,将 nginx 切到备用的 tomcat 上后,发现访问从此顺畅了。。。。。。

不知道你爽不爽,反正我现在访问挺爽的!

如果你对 oschina 的服务器配置感兴趣请看这里

加载中
0
空SHEN
空SHEN
直接把内存做硬盘,好主意
0
ddatsh
ddatsh

效率真高 顶下

/dev/shm/ 原来介个就是LINUX下的虚拟内存盘

 

0
范堡
范堡

哈,用 http://www.oschina.net/question/17_34694 这篇文章介绍的方法,了解磁盘的读写率,以及负荷率,对识别问题很有用处。

0
xu81.com
xu81.com

多谢分享。

感觉java的文件io确实有点慢。

皮总
皮总
java 磁盘 IO 慢, 网络 IO慢,浮点还行。
0
虫虫
虫虫
现在访问OSC飞一样的速度啊~
0
皮总
皮总
想利用 shm , 可是程序附件特别多,担心temp会超级大
0
子木007
子木007
确实飞起来了
0
黄金乞丐
黄金乞丐
今天早上发了个动弹,老大的响应就如此迅速, 终于不在“便秘”了。
0
笨蛋EGG
笨蛋EGG
学习学习……
返回顶部
顶部