linux — Ограничения дескрипторов файлов curl PHP, вызывающие сбой запросов

У меня есть небольшой PHP-скрипт, который выполняет (в идеале) 10000 многократных запросов на скручивание в 250 скользящих окнах. Я использую библиотеку chuyskywalker / roll-curl и скомпилировал php / curl / c-ares из исходного кода для включения AsynchDNS.

Сначала он работал отлично, и я был очень доволен этим, однако я заметил, что после 1000 запросов (1024, может быть …) curl, кажется, просто отправляет запросы, затем сдается и говорит, что не может связаться с DNS-сервером.

Я считаю, что это как-то связано с ограничениями дескриптора файла, потому что, когда я сделал ulimit -Sn Я видел, что это было в 1024 (то же самое место, локоть начинает сдаваться), поэтому я поднял предел, и ему удалось пройти дальше через пробежку, затем я снизил предел, и он снова остановился в том же месте. В настоящее время я установил ограничение в 65535, изменив /etc/security/limits.conf на

* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535

и я думал, что все было исправлено, пока я не попытался запустить 10 000 URL с тем же 250-летним окном, после чего curl снова начал сдаваться, но гораздо позже.

При выполнении cd /proc/procid/fd and ls -l | wc -l Я вижу, что процесс достигает 6500 файловых дескрипторов (не 65535), а затем вызывает проблемы в завитке.

Может кто-нибудь объяснить мне, как curl использует эти файловые дескрипторы? и если есть какой-нибудь способ, которым я могу преодолеть эту проблему?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]