Могут ли продвинутые веб-серверы быть быстрее, чем базовые веб-серверы?

Bsic веб-сервер, такой как Python SimpleHTTPServer или же THTTPD читает статические файлы с наименьшим количеством процессов; Таким образом, это довольно быстро. Как правило, добавление дополнительных функций для создания расширенного веб-сервера (но все еще легкого, такого как nginx) замедлит этот процесс.

Может ли продвинутый веб-сервер сыграть хитрость, чтобы ускорить процесс? или проще, чем самое простое невозможно, а самый простой - самый быстрый способ чтения статических файлов? Я имею в виду, может nginx (или другие легковесные веб-серверы, которые утверждают, что работают быстро) будут быстрее, чем THTTPD (или другие базовые веб-серверы с минимальным процессом)?

А как насчет CGI-скриптов, как HTTPD и питон CGIHTTPServer может просто выполнить сценарии cgi.

3 ответа

Решение

Веб-серверы с меньшим количеством функций имеют меньшую площадь памяти и процессора, что ускоряет выполнение определенных задач. Некоторые из них также специально предназначены для одной задачи.

Вот почему появилось такое программное обеспечение, как PHP-FPM. Вместо того, чтобы иметь раздутый процесс apache2, который загружает модуль PHP для каждого отдельного процесса, вы предпочитаете использовать внешний интерфейс для статических файлов (например, nginx) и внутренний (например, PHP-FPM через FastCGI) для динамических приложений.

Это, однако, зависит от вашего использования и окружающей среды. Если вы выполняете динамическую обработку на 99%, то это может не стоить хлопот. Одним хорошим примером может быть Java-приложение. Не имеет смысла выполнять всю работу по настройке внешнего интерфейса и внутреннего интерфейса, когда вы можете просто использовать tomcat и ничего больше.

"Простой" и "Быстрый" не всегда связаны, особенно в области вычислений - в этом случае SimpleHTTPServer использует простые методы чтения файлов, простые сетевые методы, чистую и очевидную обработку, которую легко читать новому программисту и т. Д.; У nginx есть масса сложного кода, позволяющего максимально эффективно использовать передовые высокоскоростные файловые и сетевые API, странные приемы с распределением памяти, чтобы избежать копирования данных и т. д.

Кроме того, языковые накладные расходы - python достаточно быстр, когда узким местом является база данных или файловая система, но я обнаружил, что для обслуживания тысяч миниатюр в секунду nginx со всеми его сложными компонентами в C в 10 раз быстрее, чем простая программа на Python это просто возвращает данные из памяти.

Что касается THTTPD против nginx, то они оба C, и оба предназначены для скорости, а не для простоты, поэтому я предполагаю, что они будут ближе к производительности - но, похоже, последнее обновление thttpd произошло в 2003 году, что означает, что оно предшествует датам. большинство высокоскоростных API, которые использует nginx.

В общем, проще значит быстрее. Однако вы не будете уверены, что сервер x быстрее сервера y, если не попробуете это сами. Вы также можете посмотреть на уже выполненные тесты (если таковые имеются), чтобы иметь представление об этом.

Расширенный веб-сервер может работать медленнее, чем простой / базовый сервер, из-за дополнительной сложности. Тем не менее, расширенный сервер может быть лучше в других сценариях. Усовершенствованный сервер обычно позволяет включать / выключать некоторые функции и оптимизировать их для повышения производительности. Таким образом, нет общего ответа!

Другие вопросы по тегам