本文共 2180 字,大约阅读时间需要 7 分钟。
STATUS CNT
-------- ----------
ACTIVE 58
INACTIVE 4889
----------
sum 4947
一共5000的session,现在达到了4900多,已经没有多少富余的session了。需要马上定位问题。 首先是需要定位session占用过多的program部分是哪些。通过如下的排查马上可以发现jdbc客户端中占用了过多的session。PROGRAM CNT STATUS
----------------------------------- ---------- --------
JDBC Thin Client 4338 INACTIVE
extract@xxxxxxx(TNS V1-V3) 60 INACTIVE
java_q4p@xxxxxxxx(TNS V1-V3) 40 INACTIVE
java@xxxxxxxx(TNS V1-V3) 31 INACTIVE
java_q4p@xxxxxxxx(TNS V1-V3) 31 INACTIVE ....... 定位了program的部分,就开始定位machine,username。更多的监控信息可以参考 http://blog.itpub.net/23718752/viewspace-776143/ 马上能够定位到session是从某台服务器上连过来的,这个时候就需要马上定位这台服务器上运行 的程序。 可以通过随机抓取一部分session的信息,然后通过sid来查看目前inactive 状态的session之前运行的sql语句来排查。 select sql_id prev_sql_id ,sql_text from v\$sql where sql_id in (select prev_sql_id sql_id from v$session where (sid||','||serial#)='$1' ) and rownum<2; 通过这些步骤肯定能够得到一些有用的信息。 今天的这个案例中,我发现很多inactive的session都是连续的,我就随机抓取了2个session,然后从查看执行过的sql记录,发现都是同一个insert语句。这样可以提供这些信息给相应的开发和系统部分来马上处理。 经过排查,他们发现确实是一个session leak的问题,经过讨论,启用了2个job在处理,占用了过多的资源,但是这两个job的优先级不是很高,所以可以稍后处理,就这样把这两个job先停掉,session的占用率马上就降下来了。 通过这个问题的排查是想说明不要完全依赖某个工具,要有自己的思路来处理问题,设定session的管理阀值就是一个衡量系统健康的指标。来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23718752/viewspace-1287641/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/23718752/viewspace-1287641/