← All posts tagged j2j

Очередной фейл в твистеде: искал, почему же у j2j всё ещё течёт память. Оказалось, проблема в Twisted: его функция internJID (http://twistedmatrix.com/documents/current/api/twisted.words.protocols.jabber.jid.html#internJID) не имеет нормального описания, но нужна, судя по всему, для кеширования JIDов, чтобы не делать им каждый раз stringprep, экономя таким образом процессорное время. (Иного объяснения я не нашёл.) Так вот, эта функция никогда не очищает кеш. А так как JIDов через j2j проходит достаточно много, через три дня работы их собирается порядка 40К, на ещё более нагруженных сервисах ситуация будет ещё плачевнее (особенно, если сервис будет без регистрации, а пользоваться им будут люди с огромного к-ва разных серверов.) Поэтому, для теста, сваял патчик, который очищает JIDы, не использовавшиеся в течение 10 минут. Теперь, вроде бы, ситуация стабилизировалась. По-хорошему, там бы использовать memcached и не выпендриваться. Если у кого-то есть такая же проблема и желание протестировать, это ли её причина, обратитесь ко мне за патчем.

Тикет писать буду, но, если честно, даже не знаю, как бы описать проблему так, чтобы на неё обратили внимание, т.к. они вообще ни на что не обращают внимания.

Что-то возникло желание написать простецкий mod_j2j для ejabberd, чтобы fault-tolerant и прочие ништяки... Но блин со временем напряги, lij уже 20 дней лежит, но скоро поднимется...

А вот щас смотрю exmpp от process-one, и понимаю, что mod_j2j фигня, можно написать ej2j, который можно будет цеплять к любому j-серверу. С другой стороны, кто будет ставить erlang ради j2j? Хотя, fault-tolerant же... :))

Пренеприятная бага с постоянным вылетанием J2J уже пофикшена в Twisted 10.2.0. Для него никаких дополнительных патчей уже не требуется. Советую всем обновиться, причём если есть любые транспорты/боты на Twisted.

Ребятки, вчера кто-то в каком-то топике про вконтактик говорил, что ж2ж-анстейбл такой анстейбл. Я не могу вспомнить, где, кто и в каком, но если сиё сообщение прочитает тот, кто это сказал, я был бы не против обсудить проблемы поподробнее :)