Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> POE::Component::Client::HTTP, FIN_WAIT_2 коннекты 
:(
    Опции темы
Nuclon
Дата 24.11.2008, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 13.8.2008
Где: Днепропетровск, У краина

Репутация: нет
Всего: нет



Непонятная загвоздка с POE::Component::Client::HTTP

Программа обходит большое количество ссылок. Работает нормально в течении первого часа или вроде того. После этого netstat показывает большое количество FIN_WAIT_2 соединений. При этом любая попытка создания запроса возвращает сразу

500 Internal Server Error
Cannot connect to somehost.com:80 (connect error 60: Operation timed out)


Подозреваю, что POE::Component::Client::Keepalive считает сокеты в таком состоянии рабочими и пытается послать запросы туда.

Ось - FreeBSD 6.

Кто виноват и что делать?
PM MAIL   Вверх
n4n0bit
Дата 24.11.2008, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 19.6.2008

Репутация: нет
Всего: 1



Cтатуса FIN_WAIT_2 говорит о полузакрытом соединении на другой стороне. 
 Может это поможет link 

ps: Соединение с FIN_WAIT_2 статусом исчезнит через 10 минут и 75 секунд если верить Стивинсону ( такова реализация в *BSD ) TCP модуль насильно переведет в состояние CLOSE .

Это сообщение отредактировал(а) n4n0bit - 24.11.2008, 19:09
PM MAIL WWW Jabber   Вверх
Nuclon
Дата 24.11.2008, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 13.8.2008
Где: Днепропетровск, У краина

Репутация: нет
Всего: нет



n4n0bit, ну, допустим, в гугле я уже искал, что такое FIN_WAIT_2 знаю.
про 10 минут и 75 секунд - это неправда - некоторые FIN_WAIT_2 висели по несколько часов и больше, хотя может в теории такого быть и не должно.

вопрос был, как заставить POE::Component::Client::HTTP работать с этой особенностью - то ли скидывать сокеты в CLOSE сразу, то ли сразу убирать сокеты из пула.
PM MAIL   Вверх
n4n0bit
Дата 24.11.2008, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 19.6.2008

Репутация: нет
Всего: 1



Ну код бы увидеть.

ps: ты линк на гугл сморел про POE ??? там есть линк в первых страницах на perlmonks с твоей проблемой
PM MAIL WWW Jabber   Вверх
Nuclon
Дата 25.11.2008, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 13.8.2008
Где: Днепропетровск, У краина

Репутация: нет
Всего: нет



n4n0bit, более того - это я на perlmonks и написал smile там автор POE подсказал, что выставить для сокета, сейчас буду играться... и пробовать делать test-case.

в коде - ничего особенного, создаю Client::HTTP с дефолтными значениями, и засылаю ему боо-о-ольшой список запросов (около 10.000 позиций), в обработчике вытягиваю нужную инфу и, если ошибка, перезапрашиваю урл снова.

как решение проблемы, конечно, заюзать Client::UserAgent, но работать, чую, будет медленней из-за создания нового подключения для каждого запроса


PM MAIL   Вверх
n4n0bit
Дата 25.11.2008, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 19.6.2008

Репутация: нет
Всего: 1



Заюзай тогда Socket.pm 
PM MAIL WWW Jabber   Вверх
hellman
Дата 27.12.2008, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 27.12.2008

Репутация: нет
Всего: нет



Нашли какиое нибудь решение? А то сейчас столкнулся с точно такой же проблемой. А переписвать все под Socket совсем не хочется.

PM MAIL   Вверх
gcc
Дата 28.12.2008, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



на сервер скорее всего запрещено посылать "кривые" пакеты навереное, с отсутсвием каких-то важных заголовков
PM WWW ICQ Skype GTalk Jabber   Вверх
Nuclon
Дата 29.12.2008, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 13.8.2008
Где: Днепропетровск, У краина

Репутация: нет
Всего: нет



hellman, решение временное и нехорошее - заюзал POE::Component::Client::UserAgent.

сейчас стараюсь найти свободное время и написать case, чтобы продемострировать проблему создателю либы POE и POE::Component::Client::HTTP.
PM MAIL   Вверх
Ramirez
Дата 29.12.2008, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 18.1.2005
Где: Moscow, ExUSSR

Репутация: 4
Всего: 5



мне кажется, это не проблема POE.
Я бы порекомендовал потюнить tcp стек freebsd.
например в 7ой ветке  есть:
Код

net.inet.tcp.fast_finwait2_recycle
net.inet.tcp.finwait2_timeout 



PM ICQ   Вверх
Nuclon
Дата 29.12.2008, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 13.8.2008
Где: Днепропетровск, У краина

Репутация: нет
Всего: нет



Ramirez, ну у мну сервер на 6.2, и поставить семёрку я туда не могу.
в шестой ветке таких настроек нету, да. Если есть идеи, что можно подкрутить в шестёрке - буду рад
PM MAIL   Вверх
Ramirez
Дата 30.12.2008, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 18.1.2005
Где: Moscow, ExUSSR

Репутация: 4
Всего: 5



В шестерке я бы попробовал:
Код

net.inet.tcp.msl


"максимальное время жизни сегмента (Maximum Segment Life - MSL) - максимальное время ожидания ASK в ответ на SYN-ACK или FIN-ACK (миллисекунд). По RFC 753 оно 120 секунд. Но это писалось в 1979 году и многое поменялось. В современных FreeBSD оно равно 30 секунд. Имеет смысл поставить его меньше"

вот полезное чтиво по тюнингу tcp/ip во фре:
http://www.opennet.ru/base/net/tune_freebsd.txt.html
и немного про sysctl:
http://www.lissyara.su/?id=1147
PM ICQ   Вверх
gcc
Дата 30.12.2008, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



Цитата(Ramirez @ 30.12.2008,  10:33)
http://www.lissyara.su/?id=1147

сейчас не работает

может быть так sysctl :
Код

   sysctl -w net.inet.ip.fw.dyn_keepalive=0






Это сообщение отредактировал(а) gcc - 30.12.2008, 10:57
PM WWW ICQ Skype GTalk Jabber   Вверх
Nuclon
Дата 30.12.2008, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 13.8.2008
Где: Днепропетровск, У краина

Репутация: нет
Всего: нет



Цитата(gcc @  30.12.2008,  10:55 Найти цитируемый пост)
   sysctl -w net.inet.ip.fw.dyn_keepalive=0

это пробовал. безрезультатно.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1026 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.