![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
Nuclon |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 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. Кто виноват и что делать? |
|||
|
||||
n4n0bit |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
Nuclon |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 13.8.2008 Где: Днепропетровск, У краина Репутация: нет Всего: нет |
n4n0bit, ну, допустим, в гугле я уже искал, что такое FIN_WAIT_2 знаю.
про 10 минут и 75 секунд - это неправда - некоторые FIN_WAIT_2 висели по несколько часов и больше, хотя может в теории такого быть и не должно. вопрос был, как заставить POE::Component::Client::HTTP работать с этой особенностью - то ли скидывать сокеты в CLOSE сразу, то ли сразу убирать сокеты из пула. |
|||
|
||||
n4n0bit |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 19.6.2008 Репутация: нет Всего: 1 |
Ну код бы увидеть.
ps: ты линк на гугл сморел про POE ??? там есть линк в первых страницах на perlmonks с твоей проблемой |
|||
|
||||
Nuclon |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 13.8.2008 Где: Днепропетровск, У краина Репутация: нет Всего: нет |
n4n0bit, более того - это я на perlmonks и написал
![]() в коде - ничего особенного, создаю Client::HTTP с дефолтными значениями, и засылаю ему боо-о-ольшой список запросов (около 10.000 позиций), в обработчике вытягиваю нужную инфу и, если ошибка, перезапрашиваю урл снова. как решение проблемы, конечно, заюзать Client::UserAgent, но работать, чую, будет медленней из-за создания нового подключения для каждого запроса |
|||
|
||||
n4n0bit |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 19.6.2008 Репутация: нет Всего: 1 |
Заюзай тогда Socket.pm
|
|||
|
||||
hellman |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 27.12.2008 Репутация: нет Всего: нет |
Нашли какиое нибудь решение? А то сейчас столкнулся с точно такой же проблемой. А переписвать все под Socket совсем не хочется.
|
|||
|
||||
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 1 Всего: 17 |
на сервер скорее всего запрещено посылать "кривые" пакеты навереное, с отсутсвием каких-то важных заголовков
|
|||
|
||||
Nuclon |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 13.8.2008 Где: Днепропетровск, У краина Репутация: нет Всего: нет |
hellman, решение временное и нехорошее - заюзал POE::Component::Client::UserAgent.
сейчас стараюсь найти свободное время и написать case, чтобы продемострировать проблему создателю либы POE и POE::Component::Client::HTTP. |
|||
|
||||
Ramirez |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 18.1.2005 Где: Moscow, ExUSSR Репутация: 4 Всего: 5 |
мне кажется, это не проблема POE.
Я бы порекомендовал потюнить tcp стек freebsd. например в 7ой ветке есть:
|
|||
|
||||
Nuclon |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 13.8.2008 Где: Днепропетровск, У краина Репутация: нет Всего: нет |
Ramirez, ну у мну сервер на 6.2, и поставить семёрку я туда не могу.
в шестой ветке таких настроек нету, да. Если есть идеи, что можно подкрутить в шестёрке - буду рад |
|||
|
||||
Ramirez |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 18.1.2005 Где: Moscow, ExUSSR Репутация: 4 Всего: 5 |
В шестерке я бы попробовал:
"максимальное время жизни сегмента (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 |
|||
|
||||
gcc |
|
||||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 1 Всего: 17 |
сейчас не работает может быть так sysctl :
Это сообщение отредактировал(а) gcc - 30.12.2008, 10:57 |
||||
|
|||||
Nuclon |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 13.8.2008 Где: Днепропетровск, У краина Репутация: нет Всего: нет |
||||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |