История изменений
Исправление sigurd, (текущая версия) :
У автора вопроса используется мультиплексирование ввода через select
ws php[5734]: Warning: socket_select(): You MUST recompile PHP with a larger value of FD_SETSIZE. Jul 11 21:48:00 ws php[5734]: It is set to 1024, but you have descriptors numbered at least as high as 1126. Jul 11 21:48:00 ws php[5734]: –enable-fd-setsize=2048 is recommended
Соответственно, жестко забито максимальное число открытых файлов 1024. Даже если увеличить его в 2-4 раза - это принципиально ничего не изменит! В классической работе http://www.kegel.com/c10k.html рассмотрены 6 стратегий значительного увеличения числа одновременно открытых соединений:
- Serve many clients with each thread, and use nonblocking I/O and level-triggered readiness notification
- Serve many clients with each thread, and use nonblocking I/O and readiness change notification
- Serve many clients with each thread, and use asynchronous I/O
- Serve one client with each server thread, and use blocking I/O
- Build the server code into the kernel
- Bring the TCP stack into userspace
Поскольку автор вопроса явно не собирается переписывать исходники PHP, заменяя select на epool - ему было предложено использовать асинхронный фреймворк https://github.com/kakserpom/phpdaemon
Исходная версия sigurd, :
У автора вопроса используется мультиплексирование ввода
ws php[5734]: Warning: socket_select(): You MUST recompile PHP with a larger value of FD_SETSIZE. Jul 11 21:48:00 ws php[5734]: It is set to 1024, but you have descriptors numbered at least as high as 1126. Jul 11 21:48:00 ws php[5734]: –enable-fd-setsize=2048 is recommended
Соответственно, жестко забито максимальное число открытых файлов 1024. Даже если увеличить его в 2-4 раза - это принципиально ничего не изменит! В классической работе http://www.kegel.com/c10k.html рассмотрены 6 стратегий значительного увеличения числа одновременно открытых соединений:
- Serve many clients with each thread, and use nonblocking I/O and level-triggered readiness notification
- Serve many clients with each thread, and use nonblocking I/O and readiness change notification
- Serve many clients with each thread, and use asynchronous I/O
- Serve one client with each server thread, and use blocking I/O
- Build the server code into the kernel
- Bring the TCP stack into userspace
Поскольку автор вопроса явно не собирается переписывать исходники PHP, заменяя select на epool - ему было предложено использовать асинхронный фреймворк https://github.com/kakserpom/phpdaemon