首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CURLOPT_DNS_CACHE_TIMEOUT -缓存错误的响应?

CURLOPT_DNS_CACHE_TIMEOUT -缓存错误的响应?
EN

Stack Overflow用户
提问于 2013-06-06 16:46:26
回答 2查看 3.7K关注 0票数 0

我的php应用程序发出的curl请求有一些DNS问题。

nginx+php5-fpm日志正在显示缓慢的脚本,其失败点是curl。

困惑是因为我的curl脚本将超时和连接超时选项都设置为3秒(生产服务器)。

因此,我偶尔会在脚本失败的地方遇到一些错误。我模拟DNS失败,我可以重新创建这些php脚本超时失败。

所以随机地我的卷发在做DNS查找和失败。要么DNS服务器无法响应,要么限制我们返回(我们在峰值时每秒发送数百个请求)。

我认为我需要向本地DNS缓存工作,但就目前而言,我能做些什么来限制糟糕的DNS响应或can超时吗?

我在想,CURLOPT_DNS_CACHE_TIMEOUT是否也缓存了坏的响应?如果是的话,我需要关闭它,如果它没有缓存任何响应/超时,那么我可以将它从2增加到15分钟,这样可能会有帮助吗?

有什么想法,我如何停止卷发和坏DNS从崩溃我的网站?

EN

回答 2

Stack Overflow用户

发布于 2013-08-22 23:46:18

也许这个手册页上的信息对其他人来说是有用的,他们发现了这个问题:

CURLOPT_DNS_CACHE_TIMEOUT 传递一个长,这将设置超时的秒。名称解析将在内存中保存此秒数。设置为零以完全禁用缓存,或设置为-1以使缓存条目永远保持不变。默认情况下,libcurl缓存此信息60秒。 注意:各种libc实现的名称解析函数不重新读取名称服务器信息,除非显式告知(例如,通过调用res_init(3))。这可能会导致libcurl继续使用较旧的服务器,即使DHCP已经更新了服务器信息,对于临时libcurl应用程序用户来说,这可能看起来像是DNS缓存问题。

来自setopt

票数 1
EN

Stack Overflow用户

发布于 2020-02-21 02:33:49

我通常在我的服务器上运行bind9,以便缓存我的域名。这比希望别人为你做这件事要好得多。

您不太清楚如何使用curl,但只有在继续运行时,缓存选项才能工作。如果您运行一个存在的脚本并在稍后重新启动,那么每次都会丢失缓存。确实如此。

如果试图访问您自己的服务,也许您应该使用/etc/hosts文件中的一个条目(如下面所示),而不是依赖于完整的DNS。如果您只访问您控制的域,您也将控制它们的IP地址。

代码语言:javascript
复制
1.2.3.4    foo.example.com

那总是管用的。

如果您正在处理许多您无法控制的域名,我担心有一个正常工作的DNS是唯一好的解决方案。在这种情况下,您可能需要考虑使用bind9并将其设置为长时间缓存您的域名(一般认为1小时至2小时是安全的,如果名称更改可能会在近24小时内出现故障,则1天或更长时间可能非常安全。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16967703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档