Проблема обработки запросов в CGI-режиме

Материал из 1GbWiki.

(Различия между версиями)
Перейти к: навигация, поиск
Версия 15:45, 13 ноября 2007 (править)
Dmach (Обсуждение | вклад)
м
← К предыдущему изменению
Версия 19:06, 26 ноября 2007 (править) (отменить)
78.106.154.8 (Обсуждение)
(Описание проблемы)
К следующему изменению →
Строка 11: Строка 11:
** на платформе Unix при выборе соответствующего режима ** на платформе Unix при выборе соответствующего режима
* Perl * Perl
-* Parser+* [[Parser]]
* некоторые другие * некоторые другие
Строка 27: Строка 27:
* Исполнение запросов прерывается, производимые ими действия не завершаются * Исполнение запросов прерывается, производимые ими действия не завершаются
* Прерываются CGI-процессы всех пользователей сервера а не только проблемного рессурса * Прерываются CGI-процессы всех пользователей сервера а не только проблемного рессурса
- 
== Перспективы == == Перспективы ==

Версия 19:06, 26 ноября 2007

Описание проблемы

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

Обработка запросов в CGI-режиме имеет ряд проблем связанных с тем, что запуск нового процесса это рессурсоёмкая задача: крайне рессурсоёмкая на Windows-сервере и чуть менее (ориентировочно в 6 раз) рессурсоёмкая на Unix-сервере.

На хостинге 1Gb.ru в CGI-режиме исполняются следующие скрипты:

  • PHP
    • на платформе Windows/IIS
    • на платформе Unix при выборе соответствующего режима
  • Perl
  • Parser
  • некоторые другие

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

Что бы исключить такие ситуации на хостинге 1Gb.ru реализована специальная служба мониторинга, которая контролирует запущенные процессы и в случае превышения лимита принимает решение о прекращении исполнения процессов и оповещает об этом администраторов хостинга.

Число процессов ориентировочно следующее:

  • 35 для x86-сервера
  • 100 для x64-сервера

Превышение указанного числа и уничтожение исполняемых процессов плохо по следующим соображениям:

  • Исполнение запросов прерывается, производимые ими действия не завершаются
  • Прерываются CGI-процессы всех пользователей сервера а не только проблемного рессурса

Перспективы

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


Пути решения проблемы

  • Если проблема относится к скриптам PHP то сайт может быть переведён на веб-сервер (как правило - Apache) исполняющий процессы не в CGI-режиме а в модуле.
    • Если вам необходимо использовать Windows-технологии (например ASP или ASPX), то вы можете перенести на Apache только часть сайта выделив её в отдельный сайт с доменом 3-его уровня, например forum.example.com
  • Если проблема относится к скриптам для которых на хостинге отсутствует возможность работы в режиме модуля, то сайт можно перенести на Unix-сервер, исполняющий CGI-запросы чуть более эффективно
  • Всё переписать отказавшись от проблемной технологии
  • Найти другой хостинг
Личные инструменты