Oracle监听器挂起及性能问题排查
当监听器(Listener)发生性能问题时设置一个级别 16 的客户端连接追踪。
在客户端 sqlnet.ora 文件中设置参数:
获取这几分钟监听器进程(tnslsnr)的 truss 命令输出以及(发生问题的时间段)不同时间点上 pstack 信息输出。
====================================================
Truss ==> truss -o /tmp/mytruss -faed -p
这个工具会一直保持追踪直到你终止它。可以使用 ctrl-c 来终止 truss。如果你是在后台运行此工具命令,那么可以通过 kill 来杀掉 truss 进程以终止它的运行。
Process stack ==> pstack
执行 3 次此命令,之间间隔 30 秒左右
如果可以的话,做一个短暂的监听器追踪:
=============================================
在服务器端 sqlnet.ora 文件中设置参数:
后 2 个参数是为了避免服务器上的监听器 trace 文件过多而设的。举例,如果你在客户端设置了以下参数:
TRACE_FILELEN_SERVER=100
TRACE_FILENO_SERVER=2
那么客户端上的 2 个 100K 的 trace 文件会被先后填满。 之后客户端会切换回第一个 trace 文件继续写入 trace 信息,覆盖原有的 trace 内容,当写满后,再到第二个trace 文件中写,如此往复。因此在 trace 信息被覆盖前,你需要将这些文件拷贝到其他目录。