曾经修改过/etc/resolve.conf后,发现apache进程里还是使用旧的dns server来解析域名,重启apache后才生效;这里给出几个确认的办法:
办法一: 如果服务器上没有其它需要域名解析的进程的话,使用tcpdump 来观察53端口的udp包就基本可以知道了
命令: tcpdump -i eth1 -nn -X -s 0 "port 53 and udp"
办法二: 随便找一个httpd的子进程strace一下就基本知道了,但是要求两点:
1. 访问量比较大,随时都有做域名解析的可能;而且程序里确实有做域名解析的需要
2. httpd子进程不会死的太快,太快了你会抓不到的
命令: strace -p pid_of_httpd_child -e trace=network 2>&1 | grep "(53)"
办法三: 因为httpd子进程可能死的太快,我们就从httpd的守护进程着手
命令: strace -p pid_of_httpd_parent -fF -e trace=network 2>&1 | grep "(53)"