首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DNS失败使网站崩溃- CURL请求

DNS失败使网站崩溃- CURL请求
EN

Server Fault用户
提问于 2013-06-06 15:24:31
回答 1查看 2.9K关注 0票数 1

我的PHP不断抛出与慢脚本相关的随机错误。nginx/php5-fpm在其错误日志中报告,由于脚本超时,子程序已被终止。

PHP5-FPM慢速错误日志报告问题在于我提出的curl请求。

困惑是因为我对所有的curl请求都使用了连接超时。

代码语言:javascript
复制
CURLOPT_CONNECTTIMEOUT 3 #number of seconds trying to connect
CURLOPT_TIMEOUT 3 #number of seconds to run curl for

这是一个生产服务器,所以值很低,我们期望在1秒内得到响应。

因此,我意识到,我们使用的URL的卷曲一定是在DNS级别失败。

因此,我模拟了一个糟糕的DNS或不可用的DNS,并且能够在日志中复制相同的错误和慢脚本消息。

那我该怎么处理呢?

1) CURLOPT_DNS_CACHE_TIMEOUT --但是将默认值从2分钟增加到10分钟?

然而,我确实看到,在我的错误中,我有这些慢速的脚本,持续了2分3秒。这意味着CURLOPT_DNS_CACHE_TIMEOUT默认的2分钟是缓存一个错误的响应,不管缓存设置的时间是多长,它都会扼杀它。时间似乎很容易忽略,但我可能错了。它会缓存错误的DNS /不可用DNS吗?

2)以某种方式编辑我的DNS名称服务器以允许多个DNS服务器。

但是,我编辑了我的resolv.conf文件,并将openDNS添加到现有的名称服务器中。但是我把一个假的DNS放在1.1.1.1的前面,它仍然失败了,给了我一个糟糕的站点网关错误。为什么它不选择另一个服务器来获得响应呢?

我以为添加多个服务器会对其进行排序,但它仍然在读取列表中的第一个,并且失败了。我认为curl缓存可能是在缓存错误的响应,但我不确定。理想情况下,我保留缓存以减少查找IP的延迟。

对于如何解决不可用的DNS服务器,使我的php脚本/ curl请求崩溃,有什么建议吗?

谢谢

EN

回答 1

Server Fault用户

发布于 2013-06-06 15:40:02

您可能需要考虑将DNS从curl手中移除,并运行您自己的本地缓存--解析器。

您可以将CURLOPT_DNS_USE_GLOBAL_CACHE设置为false以关闭缓存,然后使用本地DNS缓存来管理查找。

我不确定您正在处理的吞吐量,但我发现在DNS服务器级别处理我们自己的DNS通常比依赖许多应用程序堆栈内部的缓存更快。

请参阅:http://devblog.moz.com/2011/02/high-performance-libcurl-tips/

此外,在堆栈溢出时可能会更好地问这个问题,因为我认为是您的应用层而不是服务器级别的配置导致了问题。

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

https://serverfault.com/questions/513816

复制
相关文章

相似问题

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