Страница 11 из 16
6. Ускоряемся 6.1 Моя CGI программа работает слишком медленно/создает большую нагрузку на сервер/etc. Что делать? - Вкомплировать интерпретатор в сервер (mod_dtcl, mod_perl, pyapache для apache, серверы с поддержкой servlets, AOL server с его поддержкой tcl).
- Переделать на FastCGI или аналогичную технологию.
- Переписать ее на компилируемый язык, если написано на скриптовом. Тем самым вы избавитесь от оверхедов интерпретатора.
- Взять более мощный сервер (IBM RS/6k F50, к примеру :-)
6.2 Что такое mod_perl? Это perl, вкомпилированный в apache, что придает многие преимущества: - Скрипты и модули компилируются один раз, что значитльно увеличивает скорость ответа на запрос HTTP (до 2000%);
- Можно написать свои обработчики различных стадий запроса;
- Кеширование сединений с сервером БД -- еще прибавка к скорости;
- Директива SSI #perl позволяет в server-parsed html вызывать функции perl;
- секции <perl></perl> в конфиге apache, для его конфигурирования;
Правда, ничего не дается даром и самый важный недостаток mod_perl -- огромный расход памяти: если обычный apache занимает при работе обычно меньше мегабайта, то apache с mod_perl размером в 10-15 Mb -- вполне нормальное явление. Но, при правильной настройке, значительная часть этой памяти будет shared между копиями процессов. Основной сайт про mod_perl - https://perl.apache.org, в частности великолепный mod_perl Guide на https://perl.apache.org/guide/. 6.3 В чем разница между скриптом для CGI и mod_perl? Программа CGI исполняется один раз, за тем умирает. Под mod_perl же она загружается и исполняется до смерти сервера (в случае использования Apache::Registry, см. далее), поэтому она требует более аккуратного описания - закрывать файлы, не использовать много памяти, и тд. Более подробно о переписывании программ CGI под mod_perl - https://perl.apache.org/guide/porting.html. 6.4 В чем разница между исполнением под Apache::Registry и Apache::PerlRun? 6.5 Как использовать постоянное соединение с БД под mod_perl? 6.6 Что такое FastCGI? |