Perl: mod_perl и FastCGI - что есть что
Ваш сайт набирает обороты посещаемости, web-сервер начинает скрипеть и шататься от увеличивающихся нагрузок и время загрузки страницы сайта начинает неуклонно расти... Ну что ж, значит вам пришло время пересмотреть свои скрипты и обратить свой взор на одну из технологий, помогающих снизить нагрузку на сервер при большом количестве запросов к нему: FastCGI или mod_perl
FastCGI - расширение сервера, позволяющее преобразовывать CGI-сценарии в постоянные приложения типа сервер с продолжительным временем жизни. Сервер при запуске порождает процесс FastCGI для каждого определённого CGI-скрипта, и эти процессы отвечают на запросы до тех пор, пока они не будут явно завершены. Если ожидается, что какое-то приложение будет использоваться чаще других, можно создать несколько процессов для обработки одновременных запросов.
У такого подхода есть несколько преимуществ. Обычная CGI-программа требует при вызове дополнительных временных затрат на порождение процессов и интерпретирование кода. Если код требует дополнительной инициализации, это тоже добавляется к затраченному времени. В FastCGI приложении таких проблем нет. Здесь при каждом запросе не порождается новое приложение, вместо этого вся инициализация происходит при первом запуске. Так как время жизни этих приложений достаточно продолжительное, они позволяют сохранять данные между запросами, что тоже является преимуществом.
Еще, если в приложении используется CGI.pm, то можно задействовать интерфейс к FastCGI - модуль CGI::Fast, включённый в стандартный набор модуля CGI.pm.
Более подробно читайте тут: wikipedia: FastCGI
Официальный сайт: http://www.fastcgi.com/
mod_perl - расширение сервера Apache, встраивающее Perl в Apache, обеспечивая Perl интерфейс к Apache API. Это позволяет на Perl разрабатывать модули к Apache, для того, что бы обрабатывать определённые уровни запросов от клиента.
Так как Perl встроен в сервер, нет затрат на запуск внешнего интерпретатора. Кроме того, можно загрузить и скомпилировать все нужные внешние Perl-модули на стадии загрузки сервера, а не в процессе выполнения приложения.
Кстати, самым распространённым модулем Apache/Perl является Apache::Registry, он эмулирует CGI окружение, позволяя писать CGI пограммы, выполняющиеся в mod_perl. Также были зафиксированы случаи, когда пользователи сообщали, что при совместном использовании mod_perl и Apache::Registry производительность увеличивалась до 2000%. С такими скриптами, даже PHP не потягается. ;)
Более подробно читайте тут: wikipedia: mod_perl
Официальный сайт: http://perl.apache.org/
Теперь настало время познакомиться с Apache::Registry.
Apache::Registry - обработчик ответов, другими словами он отвечает за генерацию ответов, посылаемых клиенту. Он создаёт уровень над CGI программами, запускает программы и посылает результат клиенту. Можно также реализовать собственный обработчик ответов для обслуживания запросов. Как это делается, можно прочитать в книге Writing Apache Modules with Perl and C, Линкольна Штейна и Дуга Макичерна, издательство O'Reilly.
Извечный вопрос: что лучше, FastCGI или mod_perl - я оставлю решать вам.
У каждой из технологий есть свои большие плюсы и маленькие минусы, и что окажется легче для изучения именно вам зависит только от вас :)
Дополнительные ссылки:
Apache Module mod_fcgid
Почему mod_perl?
Apache, fastcgi и c++: «Hello, world»
Программирование под mod_perl - F.A.Q.
FastCGI - расширение сервера, позволяющее преобразовывать CGI-сценарии в постоянные приложения типа сервер с продолжительным временем жизни. Сервер при запуске порождает процесс FastCGI для каждого определённого CGI-скрипта, и эти процессы отвечают на запросы до тех пор, пока они не будут явно завершены. Если ожидается, что какое-то приложение будет использоваться чаще других, можно создать несколько процессов для обработки одновременных запросов.
У такого подхода есть несколько преимуществ. Обычная CGI-программа требует при вызове дополнительных временных затрат на порождение процессов и интерпретирование кода. Если код требует дополнительной инициализации, это тоже добавляется к затраченному времени. В FastCGI приложении таких проблем нет. Здесь при каждом запросе не порождается новое приложение, вместо этого вся инициализация происходит при первом запуске. Так как время жизни этих приложений достаточно продолжительное, они позволяют сохранять данные между запросами, что тоже является преимуществом.
Еще, если в приложении используется CGI.pm, то можно задействовать интерфейс к FastCGI - модуль CGI::Fast, включённый в стандартный набор модуля CGI.pm.
Более подробно читайте тут: wikipedia: FastCGI
Официальный сайт: http://www.fastcgi.com/
mod_perl - расширение сервера Apache, встраивающее Perl в Apache, обеспечивая Perl интерфейс к Apache API. Это позволяет на Perl разрабатывать модули к Apache, для того, что бы обрабатывать определённые уровни запросов от клиента.
Так как Perl встроен в сервер, нет затрат на запуск внешнего интерпретатора. Кроме того, можно загрузить и скомпилировать все нужные внешние Perl-модули на стадии загрузки сервера, а не в процессе выполнения приложения.
Кстати, самым распространённым модулем Apache/Perl является Apache::Registry, он эмулирует CGI окружение, позволяя писать CGI пограммы, выполняющиеся в mod_perl. Также были зафиксированы случаи, когда пользователи сообщали, что при совместном использовании mod_perl и Apache::Registry производительность увеличивалась до 2000%. С такими скриптами, даже PHP не потягается. ;)
Более подробно читайте тут: wikipedia: mod_perl
Официальный сайт: http://perl.apache.org/
Теперь настало время познакомиться с Apache::Registry.
Apache::Registry - обработчик ответов, другими словами он отвечает за генерацию ответов, посылаемых клиенту. Он создаёт уровень над CGI программами, запускает программы и посылает результат клиенту. Можно также реализовать собственный обработчик ответов для обслуживания запросов. Как это делается, можно прочитать в книге Writing Apache Modules with Perl and C, Линкольна Штейна и Дуга Макичерна, издательство O'Reilly.
Извечный вопрос: что лучше, FastCGI или mod_perl - я оставлю решать вам.
У каждой из технологий есть свои большие плюсы и маленькие минусы, и что окажется легче для изучения именно вам зависит только от вас :)
Дополнительные ссылки:
Apache Module mod_fcgid
Почему mod_perl?
Apache, fastcgi и c++: «Hello, world»
Программирование под mod_perl - F.A.Q.