PtokaX 0.4.1.1 \ Debian 5
Проблема: Если отправлять много сообщений пользователю скриптом (функции Core.SendTo*; Core.SendPm* и т.п.) то хаб отключает его (пользователя) без каких-либо причин (не информирует).
В винде этого нет. Как-будто происходит переполнение буфера.
Кто с этим сталкивался?
З.Ы.
Для примера. Хаб ~ 2k. В PtokaX установлена отправка MyINFO в минимальном виде (только размер файллиста, ник само собой). Скрипт. Создаёт таблицу пользователей, берёт MyINFO, корректирует (изменяет описание, тэг и т.п.), забивает новый в таблицу и затем отправляет всем изменённый (при срабатывании MyINFOArrival). Соответственно при входе на хаб пользователю отправляется 2к изменённых майинфо скриптом (и конечно же, минимальные самой птокой).
На винде я тоже с таким сталкивался, когда с хаба отправлял в личку большие объёмы информации. Не знаю чем это может быть вызвано. Возможно действительно нужно увеличить буфер отправки.
В винде как раз всё хорошо. Дело не в количестве знаков в одном сообщении а именно в частоте использовании функции отправки.
Размеры буферы устанавливаются такие:
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
На скрипт можно взглянуть?
Проблема решена. Внимание, это происходило из-за отключения в PtokaX параметра "Keep slow users online".
Не знаю зачем я его когда то отключил.. видимо проверить, результат оказался, как говорится на лицо ))
З.Ы.
В винде у меня как раз стояла эта галка, поэтому проблемы там и не было.
Тогда появляется вопрос, как реализуется данный метод в плане кода хаба? Просто больше таймаут для сокета или что?
В плане кода, я посмотрел, там вот как:
если размер буфера отправки начинает превышать некое пороговое значение, и при этом отключена настройка "Keep slow users online", тогда хаб отключает пользователя с переполненным буфером отправки. Если же при данном переполнении включена указанная настройка, то хаб отделяет от буфера несколько первых команд и отсылает пользователю только их, а остальные команды оставляет в буфере и отправляет в следующей партии.