Масштабирование простого Perl CGI на сервер большого объема - PullRequest
2 голосов
/ 25 августа 2010

Я написал Perl-программу, которая ищет и обрабатывает один текстовый файл. Этот процесс CGI загружает файл непосредственно в память, обрабатывает файл на основе ввода пользователя, а затем генерирует результат HTML.

Работает функционально. Однако я знаю, что после развертывания на сервере большого объема он не сможет ответить вовремя. Я подозреваю, что память является узким местом. Каков наилучший способ поделиться этим файлом, чтобы он один раз считывался в память после запуска сервера и никогда больше?

Решение, которое я предполагаю, - это демон сервера, который загружает файл в память и обслуживает другие процессы / потоки их данных. Если да, то какой метод является лучшим для реализации МПК?

Ответы [ 2 ]

6 голосов
/ 25 августа 2010

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

Преимущество mod_perl состоит в том, что он позволяет вам копаться в Apache, используя Perl. Если вы не используете это, это излишне. У mod_perl много недостатков. Он связывает вас с Apache и любой версией Perl, скомпилированной в mod_perl. Он смешивает конфигурацию и пространство памяти всех ваших Perl-приложений с Apache, что усложняет настройку и приводит к переполнению памяти. И mod_perl действительно сложен и сложен в обновлении.

2 голосов
/ 25 августа 2010

Именно поэтому был создан mod_perl .

...