Как сделать нагрузочное тестирование веб-сервера для сравнения PHP+Nginx vs Node.js?

Разрабатываю несложный веб-сервис, пока не знаю на какие рельсы его поставить. С этой задачей и PHP отлично справится, и Node.js. Последним, возможно, чуток сложнее будет ваять, покуда опыта меньше в работе с HTTP-серверами + Node.js. Но синтаксис у ноды попривычнее, чем у PHP.
Поэтому думаю, чем бы нагрузить локальный сервер, чтобы понять какая из этих технологий отдаёт статику и генерирует HTML-код быстрее (+подключение к MySQL)? Последний PHP (+nginx) вроде стали очень шустро работать, интересно узнать что ниже по нагрузке, отвечает быстрее, будет ли вообще заметна разница... :)
  • Вопрос задан
  • 481 просмотр
Пригласить эксперта
Ответы на вопрос 3
bingo347
@bingo347 Куратор тега Node.js
Crazy on performance...
В плане отдачи статики - врядли Ваш код хоть на php хоть на node сможет тягаться по скорости с Nginx, иначе Вы не задавали бы подобные вопросы. В любом случае стоит ставить nginx перед любым бэкендом, хоть php хоть node. Помимо раздачи статики еще получите и нормальную работу с tls и балансировку.
По динамике:
php - работает только в режиме 1 запрос = 1 процесс, соответственно процессов в памяти будет больше, а значит и больше памяти потребуется и больше процессорного времени будет уходить на switch-context. Так же и очередь ожидающих запросов будет больше ибо php работает синхронно, а это значит что при ожидании io (файлы/бд) Ваш процесс в idle. Самый быстрый вариант сейчас с php-fpm, который работает по протоколу fastcgi и держит пул предзапущенных потоков php. Так же возможна работа по http с apache, но этот вариант явно медленнее и тяжелее чем php-fpm.
node - может обрабатывать много запросов в 1 процессе засчет асинхронной модели выполнения, соответственно Вам может хватить небольшого количества процессов для очень большой нагрузки. Можно работать с nginx как по протоколу http (есть из коробки) так и fastcgi (при этом по прежнему имея 1 процесс)

Теперь по нагрузочному тестированию, нужно хорошо разбираться в обоих тестируемых технологиях, знать о возможных оптимизациях и как их обойти. И даже при всем этом Вы не получите адекватных результатов на синтетических примерах... Можно сравнить решение конкретной задачи, но для этого придется разработать решение на обоих технологиях, а оно Вам надо? БольшАя часть задержек в большинстве веб-сервисов падает на базу данных, которая особо не зависит от выбранного ЯП, хотя асинхронная модель тут предпочтительнее...
Так что пишите на чем умеете
Ответ написан
@Araya
Качай https://jmeter.apache.org/ и балуйтесь на здоровье
Ответ написан
Комментировать
dimonchik2013
@dimonchik2013
non progredi est regredi
посомтрите любые бенчмарки фрейморков

для взролого можно Яндекс танк

но можно и по-простому - wrk
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы