LINUX.ORG.RU
ФорумTalks

Вышел mod_perl 2.0.12

 ,


0

1

Собственно, сабж. https://metacpan.org/dist/mod_perl/changes

2.0.12 January 30, 2022

mod_perl — дополнительный модуль для веб-сервера Apache, внедряющий интерпретатор языка Perl в Apache, и позволяющий избежать значительных накладных расходов на запуск Перла для обработки каждого запроса.

mod_perl может эмулировать окружение CGI, для повышения производительности существующих скриптов без необходимости их переписывания.

В отличие от CGI, mod_perl предоставляет полный доступ к API сервера Apache, позволяя программисту легко создавать обработчики для любой фазы обработки запроса.

Скачать: https://cpan.metacpan.org/authors/id/S/SH/SHAY/mod_perl-2.0.12.tar.gz

★★★★★

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

Такой принцип работы вынуждает Apache httpd использовать mpm_prefork, из-за чего на каждый запрос создаётся по процессу.
Т.е. mod_perl создаёт значительные накладные расходы, но зато не «на запуск Перла», так что, в принципе, не солгали :-).

Darth_Revan ★★★★★
()
Последнее исправление: Darth_Revan (всего исправлений: 2)
Ответ на: комментарий от Darth_Revan

на каждый запрос создаётся по процессу. Т.е. mod_perl создаёт значительные накладные расходы

У нас тут в 21-м веке придумали copy-on-write, если чо.

shimon ★★★★★
()
Ответ на: комментарий от shimon

Даже будучи «в XXI веке» с нулевыми затратами по памяти (или с бесконечною памятью, как вариант), остаются затраты на создание процесса.

Darth_Revan ★★★★★
()
Последнее исправление: Darth_Revan (всего исправлений: 2)
Ответ на: комментарий от Darth_Revan

И создаешь ты их все единожды при старте сервера. Время на их создание меряется в миллисекундах.

shimon ★★★★★
()
Ответ на: комментарий от shimon

Choosing an MPM:

The prefork MPM uses multiple child processes with one thread each. Each process handles one connection at a time. On many systems, prefork is comparable in speed to worker, but it uses more memory.

How it Works:

A single control process is responsible for launching child processes which listen for connections and serve them when they arrive. Apache httpd always tries to maintain several spare or idle server processes, which stand ready to serve incoming requests. In this way, clients do not need to wait for a new child processes to be forked before their requests can be served.
<…> Sites which need to serve more than 256 simultaneous requests may need to increase MaxRequestWorkers, while sites with limited memory may need to decrease MaxRequestWorkers to keep the server from thrashing (swapping memory to disk and back).

Darth_Revan ★★★★★
()
Последнее исправление: Darth_Revan (всего исправлений: 1)
Ответ на: комментарий от shimon

У нас тут в 21-м веке придумали copy-on-write, если чо.

apache форкается, и мгновенно делает exec в perl. И куда ты CoW тут всунуть собираешься?

derlafff ★★★★★
()

Предлагаю запилить тэг «новости от saahriktu».

sudopacman ★★★★★
()
Ответ на: комментарий от Darth_Revan

нет - префоркнутый процесс не завершается после обработки запроса, а ждёт следующего

vividsnow
()
Ответ на: комментарий от derlafff

apache форкается, и мгновенно делает exec в perl. И куда ты CoW тут всунуть собираешься?

Туда, где ядро делает mmap(2) на /usr/bin/perl.

shimon ★★★★★
()
Ответ на: комментарий от annulen

Разным людям разные расширения Apache удобны.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от shimon

Туда, где ядро делает mmap(2) на /usr/bin/perl.

Ты расскажи мне, где тут CoW и какой он профит даёт.

CoW мог бы работать, когда один perl форкается в другой. И тогда по сути никакой «write» до поступления новых данных не нужен.

Но тут этого не происходит. Процесс апача форкается в /usr/bin/perl. Который с диска нужно в любом случае прочитать (ибо он мог измениться). По сути тут идет создание нового процесса. CoW позволяет сэкономить какие-то ресурсы (либо тупо ускорить что-то) за счёт ленивости, но тут мгновенно происходит сначала copy, потом write (или remap, не важно).

derlafff ★★★★★
()
Последнее исправление: derlafff (всего исправлений: 1)
Ответ на: комментарий от derlafff

Ну, ядро-то, думаю, будет знать, изменился ли файл у него под ногами или нет. Кому еще об этом знать лучше. Есть еще кеш файловой системы.

shimon ★★★★★
()
Ответ на: комментарий от derlafff

exec-a нет, mod_perl - это встроенный perl-интерпретатор внутри apache-процесса

vividsnow
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.