Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ PtokaX под *nix _ Сброс соединения если много Core.Send*

Автор: red_neon 28.11.2009, 1:15

PtokaX 0.4.1.1 \ Debian 5
Проблема: Если отправлять много сообщений пользователю скриптом (функции Core.SendTo*; Core.SendPm* и т.п.) то хаб отключает его (пользователя) без каких-либо причин (не информирует).
В винде этого нет. Как-будто происходит переполнение буфера.
Кто с этим сталкивался?

З.Ы.
Для примера. Хаб ~ 2k. В PtokaX установлена отправка MyINFO в минимальном виде (только размер файллиста, ник само собой). Скрипт. Создаёт таблицу пользователей, берёт MyINFO, корректирует (изменяет описание, тэг и т.п.), забивает новый в таблицу и затем отправляет всем изменённый (при срабатывании MyINFOArrival). Соответственно при входе на хаб пользователю отправляется 2к изменённых майинфо скриптом (и конечно же, минимальные самой птокой).

Автор: Setuper 28.11.2009, 1:37

На винде я тоже с таким сталкивался, когда с хаба отправлял в личку большие объёмы информации. Не знаю чем это может быть вызвано. Возможно действительно нужно увеличить буфер отправки.

Автор: red_neon 28.11.2009, 7:54

В винде как раз всё хорошо. Дело не в количестве знаков в одном сообщении а именно в частоте использовании функции отправки.

Размеры буферы устанавливаются такие:
echo "33554432" > /proc/sys/net/core/rmem_max
echo "33554432" > /proc/sys/net/core/wmem_max
echo "8388608" > /proc/sys/net/core/rmem_default
echo "4194394" > /proc/sys/net/core/wmem_default
echo "4096 8388608 16777216" > /proc/sys/net/ipv4/tcp_rmem
echo "4096 4194394 16777216" > /proc/sys/net/ipv4/tcp_wmem


Автор: Alexey 28.11.2009, 23:02

На скрипт можно взглянуть?

Автор: red_neon 29.11.2009, 8:27

Проблема решена. Внимание, это происходило из-за отключения в PtokaX параметра "Keep slow users online".
Не знаю зачем я его когда то отключил.. видимо проверить, результат оказался, как говорится на лицо ))

З.Ы.
В винде у меня как раз стояла эта галка, поэтому проблемы там и не было.

Автор: Nickolya 29.11.2009, 15:25

Тогда появляется вопрос, как реализуется данный метод в плане кода хаба? Просто больше таймаут для сокета или что?

Автор: Setuper 30.11.2009, 22:49

В плане кода, я посмотрел, там вот как:
если размер буфера отправки начинает превышать некое пороговое значение, и при этом отключена настройка "Keep slow users online", тогда хаб отключает пользователя с переполненным буфером отправки. Если же при данном переполнении включена указанная настройка, то хаб отделяет от буфера несколько первых команд и отсылает пользователю только их, а остальные команды оставляет в буфере и отправляет в следующей партии.