<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">AnyEvent::HTTP сохраняет коннекты для
повторного использования и после fork с ними происходит каша...<br>
<br>
Попробуй до fork использовать AnyEvent::HTTP с параметром
keepalive => 0<br>
<br>
<br>
09.10.2013 7:26, ksvs пишет:<br>
</div>
<blockquote
cite="mid:1381289173.31699.YahooMailNeo@web171503.mail.ir2.yahoo.com"
type="cite">
<div style="color:#000; background-color:#fff;
font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial,
Lucida Grande, Sans-Serif;font-size:10pt">
<div>Есть приложение, в котором главный процесс и дочерние
общаются между собой по сокетам, используя EV модуль.<br>
Дочерние процессы получают информацию от главного, делают HTTP
запросы, анализируют и возвращают результат главному. В
дочерних процессах запросы идут параллельно с использованием
либо Net::Curl::Multi, либо AnyEven::HTTP.<br>
<br>
Все было отлично, пока не понадобилось в главном процессе
перед fork, сделать HTTMP запрос. LWP использовать можно, но
не хочется.<br>
Используемые варианты:<br>
1. Делаем первый запрос при помощи AnyEven::HTTP, дочерние
работают с Curl - все отлично. Это для проверки.<br>
2. Делаем первый запрос при помощи AnyEven::HTTP на
несуществующий адрес, дочерние работают с AnyEven::HTTP - все
нормально.<br>
3. Делаем первый запрос при помощи AnyEven::HTTP на
существующий адрес, работа AnyEven::HTTP в дочерних процессах
зависает. При этом общение между процессами идет: гонял ping
для подтверждения того, что EV не завис и система коммуникаций
между процессами жива.<br>
<br>
Может кто-то сталкивался с таким поведением AnyEven::HTTP?<br>
<br>
Сделал максимально простой вариант для теста.<br>
В нем с первоначальным вызовом AnyEven::HTTP, в дочернем
процессе AnyEven::HTTP, стал работать, но очень-очень
медленно. Точнее все зависит от того, как карты лягут: без
первого вызова время выполнения 1,24 секунды, а с первым -
может быть 21 секунд, а может быть 5 секунд.<br>
<br>
<br>
Но ведь с Curl работает отлично. Значит дело не в EV, а в
AnyEven::HTTP.<br>
Для подтверждения этого вместо первого вызова AnyEven::HTTP,
сделал просто открытие сокета, EV::WRITE, EV::READ - все
работает отлично.<br>
<br>
AnyEven::HTTP настраивал, чтобы он закрывал все сокеты. Это
перед форком. Да и делается ведь EV::break перед форком.<br>
<br>
Интересно понять причину этого.</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
</blockquote>
<br>
<br>
<div class="moz-signature">-- <br>
С уважением Анатолий.</div>
</body>
</html>