On Friday 04 February 2011 09:51:21 Ivan Petrov wrote:
> ща пришли к такому варианту перезапуска:
>  * пишем свой tcp_server (поскольку Марк в AE отказался подобавлять
> каллбеки): нужно чтобы он мог пуститься с готовым сокетом, а так же
> "спрашивал разрешения" на accept.
> * в определенный момент машина перестает 
> делать accept'ы (клиенты копятся в очереди)
> * как только все соединения 
> обработаны делаем fcntl на сокет чтобы он мог пережить exec * делаем exec
> на самого себя и запускаем tcp_server с открытым сокетом.
>
> по идее клиенты должны "заметить" разве что некоторый простой на периоде
> установления соединения.

Посмотрите на реализацию AnyEvent::HTTP::Server 
(https://github.com/Mons/AnyEvent-HTTP-Server)

там у меня как-раз и реализован запуск с готовым сокетом

а вот тут:
https://github.com/Mons/Daemond/blob/master/lib/test-shared.pl
реализован пример AE tcp сервера с префорком

т.е. запускаем нужное кол-во процессов (по кол-ву ядер)
при достижении определенного размера по vsize (see Proc::Vsize ;)) перестаем в 
чайлде делать accept, завершаем обработку текущих соединений и выходим. 
мастер процесс перезапускает чайлда.

И еще было-бы интересно все-таки взглнуть на вашу реализацию.

-- 
Vladimir Perepelitsa aka Mons Anderson
<[email protected]> / #99779956
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить