Изменения

Платформы для запуска Perl веб-приложений

1699 байтов добавлено, 16:28, 7 августа 2009
mod_perl
# Склонность к утечкам памяти. ''mod_perl течёт всегда, хоть ты его режь.'' Решение, правда, тоже несложное — MaxRequestsPerChild.
# Серьёзное увеличение размеров детёнышей процесса Apache.
# Проблемы с перезагрузкой модулей в процессе обслуживаниябез перезапуска сервера. ''Оговорка: это проблема Perl’а в целом, не только mod_perl’а. Но по крайней мере можно было бы предусмотреть быстрый «сброс» интерпретаторов по сигналу.''# В "многопользовательской" среде, точнее, в среде с множеством различных веб-приложений, мод_перл создаёт проблемы по причине отсутствия изоляции загруженного кода модулей между приложениями. Решение для этого - PerlOptions +Parent, но оно подходит только для случая с небольшим количеством приложений, т.к. в противном случае детёныши Apache вырастают до неприличных размеров по причине работы в них нескольких пулов Perl-интерпретаторов вместо одного.
# Время от времени в mod_perl всплывают совершенно неуловимые глюки, особенно в необычных режимах вроде [http://perldoc.perl.org/perlsec.html taint], и при использовании с некоторыми модулями или движками Apache. ''«Потому что Perl и mod_perl — это как бэ немного разные языки»'' (c). Например:
#* При использовании [http://mpm-itk.sesse.net/ mpm_itk], 2-го мод_перла и PerlOptions +Parent (дающей отдельный пул интерпретаторов виртхосту) глобальные переменные в пакетах (как my, так и our) перестают сохранять свои значения между запросами.
#:* Если же написать <code>s/[,\s]+/ /g for $oldstr, $newstr;</code>, то обе, как и положено, остаются не tainted.
#: Баг воспроизводится только в составе Bugzilla и только под мод_перлом, из контекста выдернуть его не получается.
#* Некоторые затрудения в отладке и профилировании приложений в среде mod_perl.
#* Отсутствие mod_perl на подавляющем большинстве веб-хостингов. Потому что для админов серверов с кучами хомячков это - головная боль, в многопользовательской среде влекущая проблемы как с безопасностью, так и с надёжностью и производительностью. Всё по причине уже описанных минусов.
#: ''Как вы думаете, почему так широко распространился язык [[PHP]]? Именно по причине простоты обслуживания.''
=== ngx_http_perl_module ===