ejabberd take 100% cpu

Hello,

I'm using the latest version of ejabberd on a Debian box. The server only have a few users (it's still in tests).

I used the server for 2 or 3 weeks without any problems. One day, I lost the connection from the server. The server used 100% cpu of the box. So, I restarted it. The server started with no problems.

The problem is that if I connect to the server again with my client, the server take 100% cpu again. Others clients can connect without problems, but if I connect my user on the server, it always bug.

How can I fix my bug ?

Thanks.

Are you running any

Are you running any transports, how did you configured ejabberd? How many concurrent users do you have?

--
sander

Yeah I have transport, but

Yeah I have transport, but the server crash with or without them started.

The number of users registered in the database is less than 10.. so there is no many concurrent users.

My config file is this (I replaced my domain name, my ip adress and my passwords):

Quote:

% $Id: ejabberd.cfg.example 538 2006-04-22 04:02:42Z alexey $

%override_acls.

% Users that have admin access. Add line like one of the following after you
% will be successfully registered on server to get admin access:
{acl, admin, {user, "myuser"}}.
%{acl, admin, {user, "ermine"}}.

% Blocked users:
%{acl, blocked, {user, "test"}}.

% Local users:
{acl, local, {user_regexp, ""}}.

% Another examples of ACLs:
%{acl, jabberorg, {server, "jabber.org"}}.
%{acl, aleksey, {user, "aleksey", "jabber.ru"}}.
%{acl, test, {user_regexp, "^test"}}.
%{acl, test, {user_glob, "test*"}}.

% Only admins can use configuration interface:
{access, configure, [{allow, admin}]}.

% Every username can be registered via in-band registration:
% You could replace {allow, all} with {deny, all} to prevent user from using
% in-band registration
{access, register, [{deny, all}]}.

% After successful registration user will get message with following subject
% and body:
{welcome_message,
{"Welcome!",
"Welcome to Jabber Service. "
"For information about Jabber visit http://jabber.org"}}.
% Replace them with 'none' if you don't want to send such message:
%{welcome_message, none}.

% List of people who will get notifications about registered users
%{registration_watchers, ["admin1@mydomain.org",
% "admin2@mydomain.org"]}.

% Only admins can send announcement messages:
{access, announce, [{allow, admin}]}.

% Only non-blocked users can use c2s connections:
{access, c2s, [{deny, blocked},
{allow, all}]}.

% Set shaper with name "normal" to limit traffic speed to 1000B/s
{shaper, normal, {maxrate, 1000}}.

% Set shaper with name "fast" to limit traffic speed to 50000B/s
{shaper, fast, {maxrate, 50000}}.

% For all users except admins used "normal" shaper
{access, c2s_shaper, [{none, admin},
{normal, all}]}.

% For all S2S connections used "fast" shaper
{access, s2s_shaper, [{fast, all}]}.

% Admins of this server are also admins of MUC service:
{access, muc_admin, [{allow, admin}]}.

% All users are allowed to use MUC service:
{access, muc, [{allow, all}]}.

% This rule allows access only for local users:
{access, local, [{allow, local}]}.

% Authentication method. If you want to use internal user base, then use
% this line:
%{auth_method, internal}.

% For LDAP authentication use these lines instead of above one:
%{auth_method, ldap}.
%{ldap_servers, ["mydomain.org"]}. % List of LDAP servers
%{ldap_uidattr, "uid"}. % LDAP attribute that holds user ID
%{ldap_base, "dc=example,dc=com"}. % Search base of LDAP directory
%{ldap_rootdn, "dc=example,dc=com"}. % LDAP manager
%{ldap_password, "******"}. % Password to LDAP manager

% For authentication via external script use the following:
{auth_method, external}.
{extauth_program, "/home/jabber/authentification/auth.sh"}.

% For authentication via ODBC use the following:
%{auth_method, odbc}.
%{odbc_server, "DSN=ejabberd;UID=ejabberd;PWD=ejabberd"}.

% Host name:
{hosts, ["mydomain.org"]}.

%% Anonymous login support:
%% auth_method: anonymous
%% anonymous_protocol: sasl_anon|login_anon|both
%% allow_multiple_connections: true|false
%%{host_config, "public.example.org", [{auth_method, anonymous},
%% {allow_multiple_connections, false},
%% {anonymous_protocol, sasl_anon}]}.
%% To use both anonymous and internal authentication:
%%{host_config, "public.example.org", [{auth_method, [anonymous, internal]}]}.

% Default language for server messages
{language, "fr"}.

% Listened ports:
{listen,
[{5222, ejabberd_c2s, [{access, c2s}, {shaper, c2s_shaper}, {ip, {123, 123, 123, 123}},
starttls, {certfile, "/home/jabber/ssl/ejabberd.pem"}]},
{5223, ejabberd_c2s, [{access, c2s}, {ip, {123, 123, 123, 123}},
tls, {certfile, "/home/jabber/ssl/ejabberd.pem"}]},

{5269, ejabberd_s2s_in, [{shaper, s2s_shaper}, {ip, {123, 123, 123, 123}}]},
{5280, ejabberd_http, [http_poll, {ip, {127, 0, 0, 1}}]},
{XXXX, ejabberd_http, [web_admin, {ip, {123, 123, 123, 123}}]},
{XXXX, ejabberd_service, [{ip, {127, 0, 0, 1}}, {host, "msn.mydomain.org",
[{password, "passwd"}]}]},
{XXXX, ejabberd_service, [{ip, {127, 0, 0, 1}}, {host, "icq.mydomain.org",
[{password, "passwd"}]}]},
{XXXX, ejabberd_service, [{ip, {127, 0, 0, 1}}, {host, "aim.mydomain.org",
[{password, "passwd"}]}]},
{XXXX, ejabberd_service, [{ip, {127, 0, 0, 1}}, {host, "yahoo.mydomain.org",
[{password, "passwd"}]}]}
]}.

% Use STARTTLS+Dialback for S2S connections
{s2s_use_starttls, true}.
{s2s_certfile, "/home/jabber/ssl/ejabberd.pem"}.
%{domain_certfile, "example.org", "./example_org.pem"}.
%{domain_certfile, "example.com", "./example_com.pem"}.

% If SRV lookup fails, then port 5269 is used to communicate with remote server
{outgoing_s2s_port, 5269}.

% Used modules:
{modules,
[
{mod_register, [{access, register}]},
{mod_roster, []},
{mod_privacy, []},
{mod_adhoc, []},
{mod_configure, []}, % Depends on mod_adhoc
{mod_configure2, []},
{mod_disco, []},
{mod_stats, []},
{mod_vcard, []},
{mod_offline, []},
{mod_announce, [{access, announce}]}, % Depends on mod_adhoc
{mod_echo, [{host, "echo.mydomain.org"}]},
{mod_private, []},
{mod_irc, []},
% Default options for mod_muc:
% host: "conference." ++ ?MYNAME
% access: all
% access_create: all
% access_admin: none (only room creator has owner privileges)
{mod_muc, [{access, muc},
{access_create, muc},
{access_admin, muc_admin}]},
% {mod_muc_log, []},
% {mod_shared_roster, []},
{mod_pubsub, []},
{mod_time, []},
{mod_last, []},
{mod_version, []}
]}.

% Local Variables:
% mode: erlang
% End:

Thanks.

Re: Yeah I have transport, but

Quote:

% For authentication via external script use the following:
{auth_method, external}.
{extauth_program, "/home/jabber/authentification/auth.sh"}.

Maybe some problem with your external authentication script?

Re: Yeah I have transport, but

sander wrote:
Quote:

% For authentication via external script use the following:
{auth_method, external}.
{extauth_program, "/home/jabber/authentification/auth.sh"}.

Maybe some problem with your external authentication script?

I don't think so.

I'm using the PHP script included with the ejabberd tarball. The SH script just call the PHP one (doesn't work if without this !?).

The script authenticate others users (and me in the past) without problems. Also, this is not the script that take 100% cpu but the ejabberd deamon. Plus, I'm able to authenticate myself and see my contact list. The problem seem to occur only after authentication.

Thanks.

Re: ejabberd take 100% cpu

ohmer wrote:

The problem is that if I connect to the server again with my client, the server take 100% cpu again. Others clients can connect without problems, but if I connect my user on the server, it always bug.

Possible reasons, and what you can do to be sure:

  • There's a problem in ejabberd (either bug or DB problem) that only affects your user. Create another user and login on it with the same Jabber client that gives you problems. This way you will know if the problem is the Jabber client or the Jabber server. If the problem was the old user, remove it using the webinterface, create it again and check if it finally works.
  • Your Jabber client is buggy, try using the same as your other users.
  • You have a strange option enabled on your Jabber client. Ask your users if they enable SSL, TLS, SASL... whatever, and set it as they do.

If you find where that weird problem is, please comment it.

Hello, If I log as another

Hello,

If I log as another user, the server does not crash.

My primary Jabber client is Gajim and I also tried Psi and they both crash the server if I log with my user on the server. I remember the server crashed the first time when I was connected at home with Gajim (away) and at work with Psi (at my computer but not active on Jabber)

So the bug seem to be related at my user row in the database. I think I cannot just remove my user and hope the bug doesn't occur later, this is not a real solution to my problem.

Thanks.

any ideas ? :/

any ideas ? :/

Syndicate content