Re: Catalyst: увеличиваем скорость реакции

Ivan Иван solodbeer at yandex.ru
Mon Sep 13 12:30:39 PDT 2010




13.09.10, 22:36, "Alexandr Ciornii" <alexchorny at gmail.com>:

> 13 сентября 2010 г. 19:54 пользователь Sergeev Serge  написал:
>  > 13.09.10, 02:27, "Alexandr Ciornii" :
>  
>  >>  > Вообще в Перл 5 к сожалению (в отличие от ПХП) есть только один метод разблокировать клиента и продолжить фоновое выполнение - это форк (запускается копия текущего процесса, а затем эта копия отсоединяется от текущего процесса, а сам текущий процесс завершается и отпускает клиента).
>  >>
>  >>  Насколько я помню,  close(STDOUT); позволяет продолжить выполнение
>  >>  после полной отдачи страницы. А как в PHP это можно сделать?
>  >
>  > Как раз в PHP оно именно где-то так, просто и делается.
>  
>  Даже если PHP запущен как mod_php или под FastCGI?
>  
>  > А вот в Perl close(STDOUT) в mod_perl/fast-cgi вообще не имеет смысла, а fork работает и в cgi, и в fast-cgi, и в mod_perl.
>  >
>  >>  > При этом очевидно, что форк catalyst это ужжасно долго,
>  >>
>  >>  fork под Unix - это всегда очень быстро, программа не копируется, а
>  >>  используется COW. Например, Apache+mod_perl использует COW, а в данном
>  >>  случае размер процесса может быть весьма большим.
>  >
>  > Вы не забыли что речь идет не о helloworld а о реальном продакшеновом приложении под catalyst?
>  > Там может быть например презагрузка кучи либ и также прекеширование данных на старте.
>  > Ну допустим оно даже форкается тупым копированием памяти, но это все равно сожрет кучу ОЗУ
>  
>  Как я написал раньше, fork - это не копирование. Память помечается как
>  используемая несколькими процессами. fork был специально так
>  оптимизирован. В частности, system() работает через fork().
>  

Тут вот, можно поподробнее. Я думал всегда, что идёт всё же копирование скопа. И, для threads, в отличии от классического fork можно указать совместно используемые переменные (= память). Если форк тупо помечает память, то при изменении переменных, это бы видели остальные чилды. Что как бэ не так. Значит ссылки на переменные - откопированны, а не просто помеченны.

>  > Так, по опыту, в реальной жизни, приложение на catalyst может стартовать десятки секунд.
>  
>  Запускаться и делать fork - принципиально разные вещи.
>  
>  

Вопрос есть ещё: сгенерить UUID для подтверждения, прописать его в базе, сформировать письмецо и скинуть его на локальный postfix (ну или что там) - это даже не нагрузка. И времени это не занимает. В чём оптимизация-то процесса регистрации?
Может нужно не Catalyst костылить, а посмотреть в чём реальный тормоз у вас при регистрации?




More information about the Kiev-pm mailing list