PHP curl文件描述符限制导致请求失败

时间:2015-08-06 16:52:35

标签: php linux curl libcurl file-descriptor

我有一个小的PHP脚本,在250滚动窗口中执行(理想情况下)10,000个多卷曲请求。我使用chuyskywalker / rolling-curl库,我从源代码编译了php / curl / c-ares来启用AsynchDNS。

起初它工作得很好而且我很满意它然而我已经注意到,在1000个请求(1024可能......)卷曲之后似乎只是发送请求然后放弃并说它不能'联系DNS服务器。

我认为这与文件描述符限制有关,因为当我做ulimit -Sn时我看到它是在1024(同一个地方卷曲开始放弃)所以我提高了限制并且它设法进一步通过然后我把限制降低了,然后再次停在同一个地方。我现在通过将/etc/security/limits.conf改为

将限制设置为65535
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535

并且我认为一切都已修复,直到我尝试使用相同的250滚动窗口运行10,000个url然后curl开始再次放弃但是稍后在运行中。

通过执行cd /proc/procid/fd and ls -l | wc -l我可以看到进程到达6500个文件描述符(而不是65535),然后导致卷曲中的问题。

有人可以向我解释curl如何使用这些文件描述符吗?如果有任何办法我可以克服这个问题?

0 个答案:

没有答案