问题现象:
某oracle数据库服务器发现使用ssh,crt连接半天1-2分钟后才返回输入密码的提示,应用人员发现使用 sys_GUID()函数获取唯一值的时候,第一次调用需要等待很长时间,但是同一session后续的调用就完全正常。(客户报告系统程序执行sys_guid系统函数,返回缓慢,需要将近一分钟才能返回。)
分析:
1、经过分析发现,登录操作系统时,登录过程需要1分钟左右,运行sqlplus命令登录数据库需要大概1分钟,执行sys_guid函数同样发现运行缓慢。
2、执行sqlplus的时候运行pstack命令,观察程序的运行堆栈,分析具体的原因。
[root@DB-PRIMARY ~]# pstack 8148 #0 0x00007fb9617fbef0 in __poll_nocancel () from /lib64/libc.so.6 #1 0x00007fb961adec92 in __res_context_send () from /lib64/libresolv.so.2 #2 0x00007fb961adc0f4 in __res_context_query () from /lib64/libresolv.so.2 #3 0x00007fb961adce0c in __res_context_search () from /lib64/libresolv.so.2 #4 0x00007fb960a73218 in gethostbyname3_context () from /lib64/libnss_dns.so.2 #5 0x00007fb960a73c6a in _nss_dns_gethostbyname_r () from /lib64/libnss_dns.so.2 #6 0x00007fb961821fdf in gethostbyname_r@@GLIBC_2.2.5 () from /lib64/libc.so.6 #7 0x00007fb9617fe044 in gethostid () from /lib64/libc.so.6 #8 0x00007fb9643da553 in snlrn () from /u01/app/oracle/product/12.2.0.1/db_1/lib/libclntsh.so.12.1 #9 0x00007fb9643da4af in nlrnini () from /u01/app/oracle/product/12.2.0.1/db_1/lib/libclntsh.so.12.1 #10 0x00007fb9643da3f4 in nlrngr () from /u01/app/oracle/product/12.2.0.1/db_1/lib/libclntsh.so.12.1 |
3、 经过分析发现是在进行dns相关解析的程序中反复超时,所致,后经过检查系统dns设置,发现其中配置的dnsip是不通的,取消dns后,系统完全恢复正常。
结论:
系统的dns无效设置,造成这一延迟现象。