While writing a script for checking ping response from a couple of servers I ran into some issues while setting timeouts for the pings. I was setting a timeout of 2 or 3 seconds but the ping command was still taking much longer to time out for the unreachable hosts.
Finally I realised that this was because of the time spent on name resolution. The ping responses came into affect only after name resolution or DNS query timed out.
In this article I'll demonstrate what I mentioned above.
Solaris:
The default ping timeout is 20 seconds. We can set a custom timeout by specifying it in seconds in the ping command as: ping <host> <timeout>
root@sandbox:/# time ping google 2
ping: unknown host google
real 0m21.452s
user 0m0.001s
sys 0m0.002s
Finally I realised that this was because of the time spent on name resolution. The ping responses came into affect only after name resolution or DNS query timed out.
In this article I'll demonstrate what I mentioned above.
Solaris:
The default ping timeout is 20 seconds. We can set a custom timeout by specifying it in seconds in the ping command as: ping <host> <timeout>
root@sandbox:/# time ping google 2
ping: unknown host google
real 0m21.452s
user 0m0.001s
sys 0m0.002s
In the above example the ping should've ideally timed out in just 2 seconds but it actually took almost 22 seconds. The reason being name resolution time out.
The workaround is to use IP addresses instead of names or specify a timeout in the /etc/resolv.conf file.
Here's an example of trying to ping a non-reachable IP address instead of hostname:
root@sandbox:/# time ping 1.2.3.4
no answer from 1.2.3.4
real 0m20.002s
user 0m0.002s
sys 0m0.008s
root@sandbox:/# time ping 1.2.3.4 2
no answer from 1.2.3.4
real 0m2.002s
user 0m0.001s
sys 0m0.003s
Linux:
The same name resolution delay is encountered while specifying a timeout with -w while working on Linux.
[root@pbox6 ~]# time ping -w 1 google
ping: unknown host google
real 0m10.013s
user 0m0.001s
sys 0m0.001s
The ping should've timed out after 1 second but took 10 seconds instead.
The fix is the same as in case of solaris. Either use IP addresses or specify a timeout for DNS resolution in the /etc/resolv.conf file.
[root@pbox6 ~]# time ping -w 1 1.2.3.4
PING 1.2.3.4 (1.2.3.4) 56(84) bytes of data.
--- 1.2.3.4 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1000ms
real 0m1.009s
user 0m0.000s
sys 0m0.007s
No comments:
Post a Comment