Ticket #54 (assigned 故障)
应用重启负载高问题
| Reported by: | chenchongqi | Owned by: | chenchongqi |
|---|---|---|---|
| Priority: | minor | Milestone: | |
| Component: | 报价库 | Version: | 报价库4.0 |
| Keywords: | Cc: | ||
| Due Date: |
Description (last modified by chenchongqi) (diff)
重启并放开后大概两分钟内,负载会高到30+,如果只是重启没有访问则没有负载高峰,thread dump看到不少mc和mongodb的线程处在native的read动作上,曾经考虑过是启动后,瞬间为请求初始化链接导致负载高,因此把mc的最小链接调到了50,后面通过线程负载发现,jvm的jit编译线程当时负载比较高,因此怀疑是内存不够,增加了内存。
已经采取的措施:
1.mc的最小链接调高,减少放开端口瞬间初始化链接的压力
2.索引页优化,灰色筛选项去掉链接
3.中文分词器重启后预加载
4.加了512M内存
下一步的措施:
1.通过打印jit编译日志来查出具体引发编译线程的代码
2.检查lib看看是否有重复的不同版本的jar包
情况有所减轻,但是还需要进一步调查。
目前通过一段时间的观察,重启负载基本在5-10之间。
2012-8-15 分割线
最近的一次检查发现重启后会出现大量r系统阻塞的情况,看我们的线程监控:threads.jsp.htm
通过分析发现r系统的客户端去做http调用的线程池最大20,因为这20条执行得很慢所以很多ssi请求转成r的调用后会在等待,导致瞬间会有大量线程初始化,应该是负载升高的一个原因。
在jdk.out日志中,重启后出现r系统的一个信息:
[PcRoute] Can not get vServer for host: pdlib.pconline.com.cn:80, domain: pdlib.pconline.com.cn
经过了解这表示r系统没有能够成功拿到ip,接着会用域名去调用,而服务器没法直接访问域名的接口,导致这些线程会卡在那里等超时。
r-route为什么重启后初期访问拿不到ip这个还有待小虎去检查。
目前已经升级到了r1.2,取ip失败会重试4次,然后返回,不去用域名调用,但相对来说还是会慢一点。在envfilter中去尝试重启后调用各域名的接口让r-route去提前适应,感觉改善不明显,看日志可以发现差不多重启完10分钟后r-r-oute才恢复正常。
感觉主要还是ssi的请求太多,现在每秒应该在百次左右,后续可以考虑把ssi部分从报价前台中分离出去,这部分功能相对独立。
Attachments
Change History
comment:1 Changed 14 years ago by chenchongqi
- Status changed from new to assigned
- Owner changed from yuanhuoqing to chenchongqi
comment:3 Changed 14 years ago by chenchongqi
附查看线程负载的方法:
top shift+h 记下线程号
在thread dump里查线程号,或者直接jstat看线程 jstack 21125|grep -A 10 52f1
![(please configure the [header_logo] section in trac.ini)](http://www1.pconline.com.cn/hr/2009/global/images/logo.gif)
