应用程序频繁请求某些服务的相同域名。
有由 PHP-FPM 提供服务的前端请求,并且有启动多个 PHP 命令行进程的 cron 作业。几乎每次都会执行对该域下的 URL 的请求。代码利用 Amazon php-sdk,据我所知,它使用 cURL 进行 Web 请求。
如何缓存重复的 DNS 查询(如果有的话)?
据我了解,单个 php-fpm 工作进程用于处理 N 个请求,然后重新生成。 DNS 缓存是否在多个 php-fpm 工作人员之间共享?
服务器在 CentOS 和 Debian 上运行。我了解到操作系统默认没有 DNS 缓存。安装一些操作系统层面的 DNS 缓存包来缓存单个请求是否有意义?
服务的 IP 地址可能很少更改,因此在 /etc/hosts
中对 IP 进行硬编码可能不是一个好主意。
最佳答案
我不知道您的 CentOS 和 Debian 上如何配置来处理 DNS 缓存,通常所有操作系统都会从您的域 SOA 记录中读取刷新 DNS 缓存的时间。
以下是检查任何域 SOA 值的方法: https://mxtoolbox.com/SOALookup.aspx
这是 PHP cURL 的情况:
DNS 缓存于 2002 年 1 月在 cURL 上实现。在此处了解更多信息:
https://curl.haxx.se/mail/lib-2002-01/0076.html
您可以使用
打开或关闭 cURL 的 DNS 缓存CURLOPT_DNS_USE_GLOBAL_CACHE
TRUE to use a global DNS cache. This option is not thread-safe and is enabled by default.
在此处阅读有关 curl 选项的更多信息:
关于php - PHP cURL DNS 缓存如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47925978/