我们在 Ubuntu 18.04 上运行 HAProxy 1.8,并且我们注意到启动时间很慢。我们之前将启动时间缓慢归咎于 DNS 查找,因为我们有很多后端需要 HAProxy 在启动时解析。
但是,由于服务器运行时systemd-resolved
启用了缓存,因此这应该不是问题(大多数后端都使用同一主机)。我们已通过尝试一些命令并查看网络流量确认它systemd-resolved
确实在运行并且缓存已启用。dig
但是当 HAProxy 启动时,我们会看到大量出站 DNS 查询流量,即使这些查询应该被缓存。systemd-resolved
stats
数千次缓存未命中也证实了这一点。
切换到dnsmasq
而不是systemd-resolved
会使系统按预期运行 - 前几个 DNS 查找不会被缓存,但之后的所有内容都会被缓存,并且 HAProxy 启动速度很快。
问题是:什么原因可能导致systemd-resolved
不缓存 DNS 查询,以及为什么它只发生在 HAProxy 查询中,而不是在使用时dig
?