производительность ejabberd mod_archive_odbc

Я использую ejabberd 2.1.12 с mod_archive_odbc, настроенным для базы данных mysql. Я проверил журналы при сохранении одного сообщения, и они выглядят ужасно. Предполагается, что Ejabberd является хорошо масштабируемым сервером xmpp, но с включенным этим модулем, вероятно, база данных mysql будет узким местом.

Журналы:

7 Query begin
7 Query select * from archive_global_prefs where us = '[email protected]'
7 Query select * from archive_jid_prefs where us = '[email protected]' and with_user = '4' and with_server = 'my.server' and with_resource = ''
7 Query select * from archive_jid_prefs where us = '[email protected]' and with_user = '4' and with_server = 'my.server' and with_resource = ''
7 Query select * from archive_jid_prefs where us = '[email protected]' and with_user = '' and with_server = 'my.server' and with_resource = ''
7 Query commit
5 Query begin
5 Query update archive_collections set with_resource = '', change_by = '[email protected]/my-resource', change_utc = '2013-05-11 09:47:46', subject = '', thread = '' where id = 9
5 Query insert into archive_messages(coll_id, utc, dir, name, body) values(9, '2013-05-11 09:47:46', 1, '', 'some random message')
5 Query commit
5 Query begin
5 Query select * from archive_global_prefs where us = '[email protected]'
5 Query select * from archive_jid_prefs where us = '[email protected]' and with_user = '6' and with_server = 'my.server' and with_resource = 'my-resource'
5 Query select * from archive_jid_prefs where us = '[email protected]' and with_user = '6' and with_server = 'my.server' and with_resource = ''
5 Query select * from archive_jid_prefs where us = '[email protected]' and with_user = '' and with_server = 'my.server' and with_resource = ''
5 Query commit
3 Query begin
3 Query update archive_collections set with_resource = 'my-resource', change_by = '[email protected]', change_utc = '2013-05-11 09:47:46', subject = '', thread = '' where id = 10
3 Query insert into archive_messages(coll_id, utc, dir, name, body) values(10, '2013-05-11 09:47:46', 0, '', 'some random message')
3 Query commit

Это дает нам 8 выборок, 2 обновления и 2 вставки для каждого сообщения. Я просмотрел код плагина и нашел что существует множественная реализация вставки, но это только для ручной архивации.

Есть ли способ оптимизировать это?


person Lucas    schedule 12.05.2013    source источник


Ответы (2)


Виртуальная машина Erlang отличается высокой масштабируемостью и надежностью. eJabberd нет.

Не бойтесь модификации архива мода. Также вы можете заняться оптимизацией модулей ejabberd odbc, они выполняют слишком много транзакций.

person user425720    schedule 13.05.2013
comment
Эй, я думал, что есть простой способ изменить это, но я понял, что не использую xep 136 (подключаюсь только к базе данных ejabberd с другим приложением), поэтому я просто написал свой простой плагин архива, который делает одну вставку, но не включает xep 136. Это было проще, чем я ожидал, спасибо :) - person Lucas; 15.05.2013

Архив XMPP теперь структурирован вокруг Управление архивом сообщений XEP-0313. Он поддерживается по умолчанию, начиная с ejabberd 15.06, с несколькими серверными частями и должен масштабироваться. к вашей потребности.

Переключившись на реализацию MAM, вы будете лучше подготовлены к будущему, поскольку все современные клиенты XMPP используют эту спецификацию в качестве эталона для реализации архивации.

person Mickaël Rémond    schedule 31.07.2015