Ticket #126 (closed 优化: fixed)
相关配置优化调整
| Reported by: | chenchongqi | Owned by: | |
|---|---|---|---|
| Priority: | major | Milestone: | |
| Component: | 报价库 | Version: | 报价库5.0 |
| Keywords: | Cc: | ||
| Due Date: |
Description
本调整也是跟重启负载相关,经过一系列日志的分析,在重启过程中出现过多个引起负载的因素,在卡住的线程里出现过包括lru缓存、r系统、jdbc连接、mc、el表达式甚至spring的getbean等。这些资源相关的线程出现在threaddump里的时候无一例外是,都在block状态等锁一个对象,然后锁住这个对象的线程又在block状态等一个内存的entry,类似以下:
http-app-a-8081-902$1100619926" daemon prio=10 tid=0x0000002b6857c400 nid=0x6b78 waiting for monitor entry [0x0000000048ceb000..0x0000000048ceca30]
java.lang.Thread.State: BLOCKED (on object monitor)
at javax.el.BeanELResolver.getProps(BeanELResolver.java:308)
- locked <0x0000002aa9903590> (a java.util.WeakHashMap)
这个状态一般是在等gc,也就是说可能重启后那几分钟,内存是不够的,从jvm日志也可以证实这点:
S0 S1 E O P YGC YGCT FGC FGCT GCT 31.62 41.02 100.00 86.86 42.29 82 141.219 5 42.040 183.258 40.77 41.02 100.00 87.20 42.29 82 141.219 5 42.040 183.258 48.43 41.02 100.00 87.38 42.29 82 141.219 5 42.040 183.258
重启的几分钟时间内就5次FGC,相对来说是偏高了。因此有两个方案来缓解,一个是给jvm加内存,一个是减少重启时的内存消耗。调小了mc、mc(R系统的)、xindex(用mc客户端)的初始化连接设置,并且调小了resin的最大线程数,考虑到重启后第一波访问的响应会偏慢(各种初始的操作),那几分钟基本上线程数是会彪到最大的,这设置会影响那个时候的内存消耗。
在239.80和239.20上修改后,目测是重启负载高峰虽然还有,但是被监控进程二次重启的情况暂未出现,对重启后的性能恢复有帮助。
Change History
Note: See
TracTickets for help on using
tickets.
![(please configure the [header_logo] section in trac.ini)](http://www1.pconline.com.cn/hr/2009/global/images/logo.gif)