Я пытаюсь понять масштабируемость Nginx + PHP под управлением Windows, скажем, 100 запросов, выполняющих среднесрочные операции.
Анализируя исходный код, я увидел:
Nginx запускает сам себя несколько раз в зависимости от конфигурации и / или количества процессоров сервера.
Хотя он использует порты завершения ввода-вывода, каждый рабочий создает только один поток для обработки запросов.
Когда запрос PHP выполнен, Nginx взаимодействует с PHP с помощью FastCGI.
На данный момент, хотя NGinx может продолжить масштабирование, я не вижу в стандартном PHP-коде fastcgi sapi, который масштабируется с использованием нескольких потоков / процессов и портов завершения.
Для unix / linux PHP-FPM решает проблему, потому что он разветвляет дочерние процессы для выполнения задач, хотя и не уверен в производительности.
Но вернемся к Windows, все еще в PHP-FPM, я не вижу конкретного кода, который бы поддерживал высокую производительность всего веб-сервера.
А есть альтернатива винде? Что-то не так в моем исследовании?
Масштабируемость nginx в Windows ограничена, поэтому это не рекомендуемая платформа для производственного веб-сайта.
Версия nginx для Windows использует собственный Win32 API (а не слой эмуляции Cygwin). Только
select()
в настоящее время используется метод обработки соединений, поэтому ожидать высокой производительности и масштабируемости не следует.Хотя можно запустить несколько рабочих, только один из них фактически выполняет какую-либо работу.
Рабочий может обрабатывать не более 1024 одновременных подключений.