Because of a POLL() Timeout, Listener Connection to a DB Takes Long Time!
Envionment: OS: OEL5.3 (2.6.18-128.el5Xen) x86-64bit RDBMS: 11.1.0.7 (in an OVM setup)
The Problem:
It takes more than 10 seconds to get connected to the 11.1.0.7 database using SQL*Net with dedicated servers.
Points to consider:
0. I posted this in DB (Net) forum as well.
1. Direct local connection has no such issue.
2. Connection to a 10.2.0.4 database on the same server is no problem either (direct as well as through SQL*Net)
3. Only dedicated connection takes such a long time. With shared servers, the connection is quick again.
4. Using prespawned servers does not help.
5. Connection is quick with another 11.1.0.7 on the same network (another guest on the same OVM server, but it is 32-bit: OEL4.3 / 2.6.9-55.0.12.9.1 ELxenU)
When I ran strace on the client as well as on listener (using: strace -T -tt -ff -o <outputfile> -p <pid>), the client process took the longest time waiting for a read() call to finish (about 10 seconds), and by looking at the entries with the same timestamp from the listener side straces, I found the following entries from the shadow process:
...
11:41:01.095138 poll({fd=10, events=POLLIN}, 1, 4769) = 0 (Timeout) <4.768228>
...
11:41:06.086246 poll({fd=10, events=POLLIN}, 1, 4777) = 0 (Timeout) <4.777516>
...
As we can see, these timeouts together account for more than 9.5 seconds out of 10.x seconds total elapsed time.
Any clue why this happens (and why not in other cases listed above)? More important, how to get this resolved? __If decreasing the timeout value for the POLL call could be a workaround, how can I achieve that in OEL5.3?_
Appreciate all your help and suggestions.
Thanks and regards,
Govardhanan.