请各位大侠帮忙看看一个Oracle 11g数据库监听的问题咨询
    
我维护的Oralce 11g,在9月27号以后正式投入使用。使用过程中发现一个php服务连接数据库有时会失败,频率大概2、3小时一次。
----------------环境配置信息-------------------
机器的配置是:
Dell r910:
CPU:4*10核E7-48702.40GHZ 
硬盘:2*300G SAS
内存:4G*16操作系统:
Suse10 Sp04 
内核:Linux coredb03 2.6.16.60-0.85.1-smp #1 SMP Thu Mar 17 11:45:06 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux数据库版本:
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production----------------分析过程-------------------
在出现这类php连接数据库超时问题以后,我检查过主机的负载、CPU、IO以及内存和SWAP的使用,都比较正常(该主机逻辑CPU有80个,负载在40以内都算正常):top - 14:17:52 up 7 days, 13:22, 13 users,  load average: 9.65, 11.04, 12.44
Tasks: 1602 total,   8 running, 1594 sleeping,   0 stopped,   0 zombie
Cpu(s):  7.6%us,  1.0%sy,  0.0%ni, 90.9%id,  0.4%wa,  0.0%hi,  0.1%si,  0.0%st
Mem:     64430M total,    46802M used,    17627M free,       27M buffers
Swap:    16386M total,     2465M used,    13921M free,    30235M cached我手工在oralce主机下面执行lsnrctl status,发现命令执行花费较长的时间。正常情况下应该在1秒以内完成的,但是在问题出现时这个可能卡住,需要执行45秒才可能完成。使用strace命令去检查,发现setsockopt花费了近44秒
13455      0.000083 write(6, "\0\306\0\0\1\0\0\0\1:\1,\0\201 \0\177\377\177\10\0\0\1"..., 198) = 198 <0.000028>
13455      0.000076 read(6, "\0>\0\0\5\0\0\0\0004(DESCRIPTION=(ADDRESS="..., 8208) = 62 <44.855009>
13455     44.855154 setsockopt(6, SOL_SOCKET, SO_SNDTIMEO, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 16) = 0 <0.000020>
13455      0.000060 setsockopt(6, SOL_SOCKET, SO_RCVTIMEO, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 16) = 0 <0.000017>目前我们已经在listener的配置文件里面增加了下面的配置,但是没有解决。
SUBSCRIBE_FOR_NODE_DOWN_EVENT_LISTENER = OFF
INBOUND_CONNECT_TIMEOUT_LISTENER=0