这个坑值得记一笔。任何命令提权前都要停顿几秒,远程登录也慢,访问外网完全正常,处理器和内存都没有压力。
原因不止一个,得分开看。主机名没有对应的解析记录,查询要等超时才返回;解析配置指向了不可达的地址;解析顺序配置让本地查询排在了最后。
测试解析耗时
time getent hosts $(hostname)
再往下检查解析配置顺序
grep hosts /etc/nsswitch.conf
接着查本地映射文件
grep -n $(hostname) /etc/hosts
补上主机名映射
echo '127.0.0.1 $(hostname)' >> /etc/hosts
当时还开着另一个排查窗口,两边日志对照着看才定位到。
同一份数据我导出了两份,一份留底,一份拿来试。
这类问题以前遇到过,但这次的触发条件和上次不一样。
改完先别撤,确认这几项。提权和登录不再停顿,主机名查询在毫秒级返回。
这里还有个坑。很多服务启动慢也是这个原因,尤其是依赖反向解析的服务;先排查解析再怀疑性能,能省掉大量无谓的调参时间。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。