Ошибка PHP-Swoole accept () не удалась, ошибка: слишком много открытых файлов [24]

Я установил php/swoole на свой сервер и настроил его с помощью Laravel swoole

Теперь проблема в том, что все работает нормально, пока общее количество запросов в секунду не превысит 1000 запросов.
Swoole регистрирует ошибку и не отвечает пользователю!
Я установил ulimit для операционной системы на 50000
Но все равно получаю ту же ошибку! Искал по всему интернету и ничего не нашел!
Os Centos 7
Сервер достаточно хорош для обработки более 1 тыс. запросов в секунду

Если у вас есть опыт в этом деле поделитесь им со мной

Примечание.
При запуске swoole также регистрирует эту ошибку:
set_max_connection: max_connection превышает максимальное значение, оно сбрасывается до 1024.


person Mr.Apr    schedule 18.01.2021    source источник
comment
Вы сами себе ответили. Проблема не в верхнем пределе открытых файлов/сокетов. Вместо этого максимальное число настроено в swoole. Я не знаю, где это настроить, но взгляните на источник github.com/swoole/swoole-src/blob/master/src/server/master.cc   -  person Sourcerer    schedule 18.01.2021
comment
@Sourcerer Для этого есть конфигурация, и я изменил ее на более чем 1024! Но во время выполнения он сообщает, что max_connection превышает максимальное значение, и сбрасывает его до значения по умолчанию! Я думаю, что есть что-то, что нужно изменить в сервере   -  person Mr.Apr    schedule 19.01.2021
comment
В коде используется минимум между параметром конфигурации и константой компиляции. Не могли бы вы проверить значение константы компиляции?   -  person Sourcerer    schedule 19.01.2021
comment
@Sourcerer Как мне это проверить?   -  person Mr.Apr    schedule 19.01.2021
comment
Проверьте код, например. github.com/swoole/swoole-src/search?q=SW_MAX_CONNECTION. Но я сделал это. Это 100000, так что это не твоя проблема... :-/   -  person Sourcerer    schedule 19.01.2021
comment
@Sourcerer спасибо за вашу помощь. Я исправил это ‹3   -  person Mr.Apr    schedule 19.01.2021


Ответы (1)


Хорошо, я разобрался.
Давайте сначала скажем, как я запускал процесс PHP-Swoole: .
Я создал службу systemd в centos, чтобы постоянно запускать процесс swoole в любой ситуации..
Итак, команда ULimit устанавливает ulimit для текущей оболочки, в которой вы находитесь. Не оболочка systemd, в которой запущен процесс запуска swoole..
Для этого вам нужно добавить параметр LimitNOFILE=100000 в блок раздела systemd [Service].
И при перезагрузке все работает нормально.

person Mr.Apr    schedule 19.01.2021