Назад | Перейти на главную страницу

Есть ли преимущества в использовании CGI на крупномасштабном сервере Apache2, или мне следует просто использовать FASTCGI?

У меня есть веб-продукт на PHP, который теоретически должен поддерживать множество пользователей. Проблема в том, что я просто оставил apache как есть и обнаружил, что он работает как CGI. Это очень неправильно и я должен сделать это в fastcgi или просто оставить как есть?

просто поймите разницу между двумя подходами:

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

с участием fastcgi у вас есть куча запущенных экземпляров этих нужных «скриптов». (такой подход экономит ваше время на запуск новых процессов, но вы должны держать под контролем кучу запущенных экземпляров, Google для php-fpm).

что выбрать сейчас: если количество реальных посетителей соответствует вашим «теоретическим» ожиданиям И у вас низкая производительность: подумайте о переходе с «cgi» на «fastcgi». в любом случае вам следует прочитать слово «fastcgi», чтобы углубить свой набор навыков. но никаких действий (жестких) не требуется, пока количество пользователей невелико, а скорость нормальная.

Единственные веские причины для использования CGI вместо fastCGI или модуля apache:

  1. для сохранения ресурсов, когда коробка обслуживает очень небольшое количество динамических страниц
  2. где вам нужно вызвать функциональность, используя другой uid (например, через suexec).
  3. где ваш механизм обработки (то есть интерпретатор PHP) очень, очень нестабильный или в процессе многократных изменений - и то только для тестирования системы

Если ни один из них не подходит, ваш веб-сайт будет работать намного медленнее и потребовать больше ресурсов для работы, поскольку ОС должна запускать новый процесс для каждого запроса.

Что такое «большой масштаб»? Для некоторых это 10 миллионов просмотров страниц в месяц, примерно 10 миллионов просмотров страниц в час. Что это для тебя?

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

Но забудем о цифрах.

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