David Ammouial | 23 May 2013 19:48
Favicon

How to check ejabberd 3 (or Community Server) performance improvement claims?

Hello, this is my first post on this list.

After reading the claimed improvements of ejabberd 3 and ejabberd 13.03beta over ejabberd 2.x, we decided to load-test it using Tsung (latest git checkout). Unfortunately, we didn't notice a dramatic difference in Tsung reports, compared to ejabberd 2.1.9. As for hardware resources, there was a small gain in RAM, compensated by a higher CPU activity.

That might be a sign of a defective Tsung load scenario on our side. Has anybody (e.g. people at ProcessOne) performed a proper workbench and would like to share their testing scenario(s) along with the results they obtained? That would allow potential adopters such as ourselves to test it in our own environment while working on a common, proved test base.

Regards

-- 
David AMMOUIAL
System Administrator, Capptain
a. 18 rue Tronchet, 75008 Paris, France
  
Latest Company News: The Good, The Bad, and The Ugly PUSH
IMPORTANT: The contents of this email and any attachments are confidential. They are intended for the named recipient(s) only. If you have received this email by mistake, please notify the sender immediately and do not disclose the contents to anyone or make copies thereof.
_______________________________________________
ejabberd mailing list
ejabberd <at> jabber.ru
http://lists.jabber.ru/mailman/listinfo/ejabberd
Kirill Ratkin | 20 May 2013 16:53
Picon

Password Hashes in MySQL

There is patch for 2.1.12 version which can store password hashes instead plain passwords in mysql 'users' table.

This is optional. Additional option {password_type,hashed} should be set to enable this feature.

Also I added second option {auth_mechanisms, [digest]}. Which just starts only particular auth backend. Just I want to have exactly defined mechanisms. So for my purpose I use {auth_mechanisms, [digest,plain]}.


Guys, how do you process patches?


Patch is attached. 

Note, mysql.sql schema is changed a bit. Thus to use patch on existent system ou need to alter 'users' table as it is in scheme.


I'd like to get a feedback about patch .. It's my first attempt to use Erlang and functional programming in general :)

Attachment (ejabberd.patch): application/octet-stream, 13 KiB
_______________________________________________
ejabberd mailing list
ejabberd <at> jabber.ru
http://lists.jabber.ru/mailman/listinfo/ejabberd
Randy Bush | 19 May 2013 05:31

ejabberdctl node issue

work0.rg.net:/root# ejabberdctl --node ejabberd <at> work0 registered-users
Failed RPC connection to the node ejabberd <at> work0: nodedown


and the port 5280 web interface works

clue bat, please

randy
_______________________________________________
ejabberd mailing list
ejabberd <at> jabber.ru
http://lists.jabber.ru/mailman/listinfo/ejabberd
Hannibal Ndlovu | 17 May 2013 19:31
Picon
Gravatar

mysql connection failed

I have ejabberd ejabberd-2.1.11 installed on debian 6 it was working fine and then all of a sudden i started seeing this in my ejabberd log. am not sure how to fix it - my Mysql seems to be working as all other databases can be connected to and accessed with no problem.

=ERROR REPORT==== 2013-05-17 19:29:49 ===
E(<0.211.0>:ejabberd_odbc:552) : mysql_conn: post_start timeout


=INFO REPORT==== 2013-05-17 19:29:49 ===
I(<0.211.0>:ejabberd_odbc:226) : mysql connection failed:
** Reason: "timed out"
** Retry after: 30 seconds

=WARNING REPORT==== 2013-05-17 19:29:49 ===
W(<0.211.0>:ejabberd_odbc:291) : unexpected info in connecting: {mysql_conn,
                                                                 <0.626.0>,
                                                                 {error,
                                                                  connect_failed}}

=ERROR REPORT==== 2013-05-17 19:29:49 ===
E(<0.207.0>:ejabberd_odbc:552) : mysql_conn: post_start timeout


=INFO REPORT==== 2013-05-17 19:29:49 ===
I(<0.207.0>:ejabberd_odbc:226) : mysql connection failed:
** Reason: "timed out"
** Retry after: 30 seconds

=ERROR REPORT==== 2013-05-17 19:29:49 ===
E(<0.213.0>:ejabberd_odbc:552) : mysql_conn: post_start timeout


=WARNING REPORT==== 2013-05-17 19:29:49 ===
W(<0.207.0>:ejabberd_odbc:291) : unexpected info in connecting: {mysql_conn,
                                                                 <0.625.0>,
                                                                 {error,
                                                                  connect_failed}}

=INFO REPORT==== 2013-05-17 19:29:49 ===
I(<0.213.0>:ejabberd_odbc:226) : mysql connection failed:
** Reason: "timed out"
** Retry after: 30 seconds

=WARNING REPORT==== 2013-05-17 19:29:49 ===
W(<0.213.0>:ejabberd_odbc:291) : unexpected info in connecting: {mysql_conn,
                                                                 <0.629.0>,
                                                                 {error,
                                                                  connect_failed}}

=ERROR REPORT==== 2013-05-17 19:29:49 ===
E(<0.212.0>:ejabberd_odbc:552) : mysql_conn: post_start timeout


=INFO REPORT==== 2013-05-17 19:29:49 ===
I(<0.212.0>:ejabberd_odbc:226) : mysql connection failed:
** Reason: "timed out"
** Retry after: 30 seconds

=WARNING REPORT==== 2013-05-17 19:29:49 ===
W(<0.212.0>:ejabberd_odbc:291) : unexpected info in connecting: {mysql_conn,
                                                                 <0.627.0>,
                                                                 {error,
                                                                  connect_failed}}

=ERROR REPORT==== 2013-05-17 19:29:49 ===
E(<0.209.0>:ejabberd_odbc:552) : mysql_conn: post_start timeout

_______________________________________________
ejabberd mailing list
ejabberd <at> jabber.ru
http://lists.jabber.ru/mailman/listinfo/ejabberd
T.Prokopp | 17 May 2013 11:58
Picon

Getting started with ejabberd and Mysql - modules_odbc

Hello List,

This is my first posting and i am not an native english speaker so 
please excuse my bad writing.
I started reading on ejabberd now for something some days and wanted to 
start testing.
I downloaded the latest stable source (2.1.12) from : 
http://www.ejabberd.im/ejabberd-2.1.12--13.03-beta1
and compiled it with the env needs on my server.

Everything went fine and i could start ejabberd with Mnesia as backend.
But my goal is to have it running with MySQL. So i read another 
"thousands" Post on the net to skill myself.
I know i need the "mod_MODNAME_odbc.erl" Sourcefiles to get it done but 
i do not find them in none of the repos.
I found some (only 2 or 3 odbc_modules), in old github/svn repos but i 
wanted to ask you , for a general place to fetch them.

Would you be so kind to provide me with some informations to get further 
with this project.

Best Regards from Germany

Thomas
Steven Lehrburger | 16 May 2013 09:48
Picon
Gravatar

Re: add_ and delete_rosteritem throughput

To answer the last of my questions: I can just call ejabberdctl's connected_users_info instead of user_sessions_info to efficiently get the information I need to further-prioritize roster changes.

That said, I'm still curious about how I might increase the overall add_rosteritem and delete_rosteritem throughput, and, if I can't increase throughput, whether my priority queue workaround sounds reasonable, and, if it is reasonable, how to figure out how many requests the queue readers can make simultaneously.

Thanks!

/~s


On Wed, May 15, 2013 at 1:37 PM, Steven Lehrburger <lehrburger <at> gmail.com> wrote:
Hi,

I've been using ejabberd along with an XMPP component in an application that requires regular changes to user rosters. 

I often need to make as many as 150 of these changes at a time, and this number will increase as the service grows. I've been doing this from my component via XML-RPC, but get "[Errno 104] Connection reset by peer" on some requests, while others take 20 seconds or more to return, even though the timeout is set to 5 seconds and maxsessions is set to infinity.

I've just been retrying the requests that fail, but the slow requests cause user experience problems. Furthermore, some of the requests are more urgent than others, and if ejabberd is still busy churning through one batch of 150 when a second comes in, then things get really clogged up. I'm running ejabberd on an m1.small Amazon EC2 instance.

Does anyone have any suggestions on how I might increase throughput?

A few other thoughts/ideas/questions:

1) I considered switching from Mnesia to MySQL so that I could modify the rosters directly, and to generally simplify my application by using only one datastore. It doesn't sound like this will work for me, however, based on various forum posts and a conversation with Badlop last week: http://chatlogs.jabber.ru/ejabberd <at> conference.jabber.ru/2013/05/08.html.

2) The best workaround I've been able to come up with is to buffer the XML-RPC requests in a priority queue (or, if I use Amazon SQS, in separate low- and high-priority queues). The queue readers could make sure they performed the high-priority requests first, but it would still be preferable to somehow increase overall throughput. Also, how should I select a number of queue readers/concurrent requests so as to saturate, but not overwhelm,ejabberd?

(I had hoped by putting the queue readers on the same machine as ejabberd I could further improve performance by using ejabberctl, but http://lists.jabber.ru/pipermail/ejabberd/2012-August/007674.html says that XML-RPC is faster, and I confirmed this with my own tests.)

3) At any given time most of the users who require roster changes are not logged in. I could further prioritize my XML-RPC requests by first calling user_sessions_info, but I doubt that would be an overall performance gain. Is there a way for my component to directly readejabberd's "Last Activity" information for a user? If this is stored in Mnesia, is there a Python library I could use to query this information from my component?

Thanks!

Best,
Steven Lehrburger

_______________________________________________
ejabberd mailing list
ejabberd <at> jabber.ru
http://lists.jabber.ru/mailman/listinfo/ejabberd
o0beaner | 15 May 2013 20:13
Picon

Unable to see online status of users

I am attempting to configure my new ejabberd installation to display online status of everyone else on the server. So far, this has been unsuccessful. I am using a php file that talks to a phpbb3 forum installation via curl for authentication and account creation. This piece, at least, is working.

Two test accounts login to the server, and neither can see the other as being online. They can add each other as a contact, and they both show as being offline.

I have installed mod_webpresence, and made the following changes to my ejabberd.cfg file:

 {5280, ejabberd_http, [
                         {request_handlers,
                          [
                            {["presence"], mod_webpresence}
                          ]},
                         %%captcha,
                         http_bind,
                         http_poll,
                         web_admin
                        ]}

%% Web presence auto enrollment
{access, webpresence_auto, [{allow, local}]}.

 {mod_webpresence, [
    {access, webpresence_auto},
    {pixmaps_path, "/var/lib/ejabberd/pixmaps"},
    {path, "status"},
  ]}


Supposedly, this configuration should automatically enroll users into webpresence, but this isn't working either. The only 2 registered webpresence users were enrolled manually. Even then, they cannot see each other as online.

I have also tried creating an "everybody" shared roster group according to Example 1 in this article: http://www.ejabberd.im/shared-roster-all

So far in 2 different clients (Psy and Pidgin,) these SRG's never even show up.

Is there something I am missing?
_______________________________________________
ejabberd mailing list
ejabberd <at> jabber.ru
http://lists.jabber.ru/mailman/listinfo/ejabberd
Steven Lehrburger | 15 May 2013 19:37
Picon
Gravatar

add_ and delete_rosteritem throughput

Hi,

I've been using ejabberd along with an XMPP component in an application that requires regular changes to user rosters. 

I often need to make as many as 150 of these changes at a time, and this number will increase as the service grows. I've been doing this from my component via XML-RPC, but get "[Errno 104] Connection reset by peer" on some requests, while others take 20 seconds or more to return, even though the timeout is set to 5 seconds and maxsessions is set to infinity.

I've just been retrying the requests that fail, but the slow requests cause user experience problems. Furthermore, some of the requests are more urgent than others, and if ejabberd is still busy churning through one batch of 150 when a second comes in, then things get really clogged up. I'm running ejabberd on an m1.small Amazon EC2 instance.

Does anyone have any suggestions on how I might increase throughput?

A few other thoughts/ideas/questions:

1) I considered switching from Mnesia to MySQL so that I could modify the rosters directly, and to generally simplify my application by using only one datastore. It doesn't sound like this will work for me, however, based on various forum posts and a conversation with Badlop last week: http://chatlogs.jabber.ru/ejabberd <at> conference.jabber.ru/2013/05/08.html.

2) The best workaround I've been able to come up with is to buffer the XML-RPC requests in a priority queue (or, if I use Amazon SQS, in separate low- and high-priority queues). The queue readers could make sure they performed the high-priority requests first, but it would still be preferable to somehow increase overall throughput. Also, how should I select a number of queue readers/concurrent requests so as to saturate, but not overwhelm,ejabberd?

(I had hoped by putting the queue readers on the same machine as ejabberd I could further improve performance by using ejabberctl, but http://lists.jabber.ru/pipermail/ejabberd/2012-August/007674.html says that XML-RPC is faster, and I confirmed this with my own tests.)

3) At any given time most of the users who require roster changes are not logged in. I could further prioritize my XML-RPC requests by first calling user_sessions_info, but I doubt that would be an overall performance gain. Is there a way for my component to directly readejabberd's "Last Activity" information for a user? If this is stored in Mnesia, is there a Python library I could use to query this information from my component?

Thanks!

Best,
Steven Lehrburger
_______________________________________________
ejabberd mailing list
ejabberd <at> jabber.ru
http://lists.jabber.ru/mailman/listinfo/ejabberd
Constantine A. Murenin | 5 May 2013 20:12
Picon

/etc/mail/virtusertable, with Sender Rewrite Scheme, for XMPP?

Hello,

I have an OpenBSD server, and I'm looking for a way to make several of
my domain-names be jabber-aware; however, I have a requirement of not
having any actual local accounts into which one must login to receive
and send messages -- everything should be forwarded to, say, a
gmail.com account, with mostly transparent address rewriting.

Basically, say, I have "example.su"; I give someone an address of
"me <at> example.su", they message it from "them <at> example.com", my server at
"example.su" receives it, and rewrites the the from and to addresses
(similar to how ~/.forward or /etc/mail/virtualusertable with Sender
Rewrite Scheme would work), and forwards it to my  <at> gmail.com account,
with the from address of something like "them%example.com <at> example.su",
or, maybe even "them%example.com%me <at> example.su".  Or if I need to
contact "them <at> example.com" myself, I'd simply initiate a conversation
with "them%example.com%me <at> example.su" from my gmail.

In email / sendmail terms, I'm looking for an
`/etc/mail/virtusertable` with Sender Rewrite Scheme solution, for
XMPP.    I would describe it as an XMPP-to-XMPP transport, but I don't
know whether such term already has a different connotation.

I've asked this question on ServerFault, but no hints so far:
    http://serverfault.com/questions/485463/forward-alias-xmpp-accounts-on-a-domain-to-gmail-com

Where should I start?

Cheers,
Constantine.
Kirill Ratkin | 5 May 2013 15:02
Picon

SCRAM password for MySQL

Guy,
One more question ...
Jira issue says SCRAM password for ODBC should work properly.
But I can't configure it.

When I add subscriber his password is in plain text in sql table.

Here is my config file attached ....

Attachment (ejabberd.cfg): application/octet-stream, 13 KiB
_______________________________________________
ejabberd mailing list
ejabberd <at> jabber.ru
http://lists.jabber.ru/mailman/listinfo/ejabberd
Bzzz | 4 May 2013 17:58
X-Face
Picon
Favicon

Re: Different users for different domains

On Sat, 4 May 2013 19:34:01 +0400
Kirill Ratkin <kirill.v.ratkin <at> gmail.com> wrote:

> I want to configure ejabberd for two domains but I want users were in
> different domains.

Perhaps this is not the answer you're looking after, but why not
using 2 servers and have them talking to each other?

This way, you have the wanted result plus a security: if one of
the server is down for any reason, the other continues to work
and only one half of the users wants to kill you painfully ;-)

JY
--

-- 
Man that scratch his butt at night
awakes with stinking fingers.

Gmane