LINUX.ORG.RU

История изменений

Исправление 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