ejabberd - Comments for "ejabberd 2.1.4 crashes during stress test" https://www.ejabberd.im/node/4316 en we're using mysql odbc https://www.ejabberd.im/node/4316#comment-56666 <p>we're using mysql odbc driver. </p> <p>Here is the config file sans passwords</p> <p>%%%<br /> %%% ejabberd configuration file<br /> %%%<br /> %%%'</p> <p>%%% The parameters used in this configuration file are explained in more detail<br /> %%% in the ejabberd Installation and Operation Guide.<br /> %%% Please consult the Guide in case of doubts, it is included with<br /> %%% your copy of ejabberd, and is also available online at<br /> %%% <noindex><a href="http://www.process-one.net/en/ejabberd/docs/" title="http://www.process-one.net/en/ejabberd/docs/" rel="nofollow" >http://www.process-one.net/en/ejabberd/docs/</a></noindex></p> <p>%%% This configuration file contains Erlang terms.<br /> %%% In case you want to understand the syntax, here are the concepts:<br /> %%%<br /> %%% - The character to comment a line is %<br /> %%%<br /> %%% - Each term ends in a dot, for example:<br /> %%% override_global.<br /> %%%<br /> %%% - A tuple has a fixed definition, its elements are<br /> %%% enclosed in {}, and separated with commas:<br /> %%% {loglevel, 4}.<br /> %%%<br /> %%% - A list can have as many elements as you want,<br /> %%% and is enclosed in [], for example:<br /> %%% [http_poll, web_admin, tls]<br /> %%%<br /> %%% - A keyword of ejabberd is a word in lowercase.<br /> %%% Strings are enclosed in "" and can contain spaces, dots, ...<br /> %%% {language, "en"}.<br /> %%% {ldap_rootdn, "dc=example,dc=com"}.<br /> %%%<br /> %%% - This term includes a tuple, a keyword, a list, and two strings:<br /> %%% {hosts, ["jabber.example.net", "im.example.com"]}.<br /> %%%</p> <p>%%%. =======================<br /> %%%' OVERRIDE STORED OPTIONS</p> <p>%%<br /> %% Override the old values stored in the database.<br /> %%</p> <p>%%<br /> %% Override global options (shared by all ejabberd nodes in a cluster).<br /> %%<br /> %%override_global.</p> <p>%%<br /> %% Override local options (specific for this particular ejabberd node).<br /> %%<br /> %%override_local.</p> <p>%%<br /> %% Remove the Access Control Lists before new ones are added.<br /> %%<br /> %%override_acls.</p> <p>%%%. =========<br /> %%%' DEBUGGING</p> <p>%%<br /> %% loglevel: Verbosity of log files generated by ejabberd.<br /> %% 0: No ejabberd log at all (not recommended)<br /> %% 1: Critical<br /> %% 2: Error<br /> %% 3: Warning<br /> %% 4: Info<br /> %% 5: Debug<br /> %%<br /> {loglevel, 5}.</p> <p>%%<br /> %% watchdog_admins: Only useful for developers: if an ejabberd process<br /> %% consumes a lot of memory, send live notifications to these XMPP<br /> %% accounts.<br /> %%<br /> %%{watchdog_admins, ["bob@example.com"]}.</p> <p>%%%. ================<br /> %%%' SERVED HOSTNAMES</p> <p>%%<br /> %% hosts: Domains served by ejabberd.<br /> %% You can define one or several, for example:<br /> %% {hosts, ["example.net", "example.com", "example.org"]}.<br /> %%<br /> {hosts, ["realtime.sgiggle.com"]}.</p> <p>%%<br /> %% route_subdomains: Delegate subdomains to other XMPP servers.<br /> %% For example, if this ejabberd serves example.org and you want<br /> %% to allow communication with an XMPP server called im.example.org.<br /> %%<br /> %%{route_subdomains, s2s}.</p> <p>%%%. ===============<br /> %%%' LISTENING PORTS</p> <p>%%<br /> %% listen: The ports ejabberd will listen on, which service each is handled<br /> %% by and what options to start it with.<br /> %%<br /> {listen,<br /> [</p> <p> {6222, ejabberd_c2s, [</p> <p> %%<br /> %% If TLS is compiled in and you installed a SSL<br /> %% certificate, specify the full path to the<br /> %% file and uncomment this line:<br /> %%<br /> {certfile, "/local/ejabberd/etc/ejabberd/jabber.pem"}, starttls_required,</p> <p> {access, c2s},<br /> {shaper, c2s_shaper},<br /> {max_stanza_size, 1048576}<br /> ]},</p> <p> %%{5269, ejabberd_s2s_in, [<br /> %% {shaper, s2s_shaper},<br /> %% {max_stanza_size, 131072}<br /> %% ]},</p> <p> %%<br /> %% ejabberd_service: Interact with external components (transports, ...)<br /> %%<br /> %%{8888, ejabberd_service, [<br /> %% {access, all},<br /> %% {shaper_rule, fast},<br /> %% {ip, {127, 0, 0, 1}},<br /> %% {hosts, ["icq.example.org", "sms.example.org"],<br /> %% [{password, "secret"}]<br /> %% }<br /> %% ]},</p> <p> %%<br /> %% ejabberd_stun: Handles STUN Binding requests<br /> %%<br /> %%{{3478, udp}, ejabberd_stun, []},</p> <p> {5280, ejabberd_http, [<br /> %%{request_handlers,<br /> %% [<br /> %% {["pub", "archive"], mod_http_fileserver}<br /> %% ]},<br /> captcha,<br /> http_bind,<br /> http_poll,<br /> web_admin<br /> ]}</p> <p> ]}.</p> <p>%%<br /> %% s2s_use_starttls: Enable STARTTLS + Dialback for S2S connections.<br /> %% Allowed values are: true or false.<br /> %% You must specify a certificate file.<br /> %%<br /> %%{s2s_use_starttls, true}.</p> <p>%%<br /> %% s2s_certfile: Specify a certificate file.<br /> %%<br /> %%{s2s_certfile, "/path/to/ssl.pem"}.</p> <p>%%<br /> %% domain_certfile: Specify a different certificate for each served hostname.<br /> %%<br /> %%{domain_certfile, "example.org", "/path/to/example_org.pem"}.<br /> %%{domain_certfile, "example.com", "/path/to/example_com.pem"}.</p> <p>%%<br /> %% S2S whitelist or blacklist<br /> %%<br /> %% Default s2s policy for undefined hosts.<br /> %%<br /> %%{s2s_default_policy, allow}.</p> <p>%%<br /> %% Allow or deny communication with specific servers.<br /> %%<br /> %%{{s2s_host, "goodhost.org"}, allow}.<br /> %%{{s2s_host, "badhost.org"}, deny}.</p> <p>%%<br /> %% Outgoing S2S options<br /> %%<br /> %% Preferred address families (which to try first) and connect timeout<br /> %% in milliseconds.<br /> %%<br /> %%{outgoing_s2s_options, [ipv4, ipv6], 10000}.</p> <p>%%%. ==============<br /> %%%' AUTHENTICATION</p> <p>%%<br /> %% auth_method: Method used to authenticate the users.<br /> %% The default method is the internal.<br /> %% If you want to use a different method,<br /> %% comment this line and enable the correct ones.<br /> %%<br /> %%{auth_method, internal}.</p> <p>%%<br /> %% Authentication using external script<br /> %% Make sure the script is executable by ejabberd.<br /> %%<br /> %%{auth_method, external}.<br /> %%{extauth_program, "/path/to/authentication/script"}.</p> <p>%%<br /> %% Authentication using ODBC<br /> %% Remember to setup a database in the next section.<br /> %%<br /> {auth_method, odbc}.</p> <p>%%<br /> %% Authentication using PAM<br /> %%<br /> %%{auth_method, pam}.<br /> %%{pam_service, "pamservicename"}.</p> <p>%%<br /> %% Authentication using LDAP<br /> %%<br /> %%{auth_method, ldap}.<br /> %%<br /> %% List of LDAP servers:<br /> %%{ldap_servers, ["localhost"]}.<br /> %%<br /> %% Encryption of connection to LDAP servers:<br /> %%{ldap_encrypt, none}.<br /> %%{ldap_encrypt, tls}.<br /> %%<br /> %% Port to connect to on LDAP servers:<br /> %%{ldap_port, 389}.<br /> %%{ldap_port, 636}.<br /> %%<br /> %% LDAP manager:<br /> %%{ldap_rootdn, "dc=example,dc=com"}.<br /> %%<br /> %% Password of LDAP manager:<br /> %%{ldap_password, "******"}.<br /> %%<br /> %% Search base of LDAP directory:<br /> %%{ldap_base, "dc=example,dc=com"}.<br /> %%<br /> %% LDAP attribute that holds user ID:<br /> %%{ldap_uids, [{"mail", "%u@mail.example.org"}]}.<br /> %%<br /> %% LDAP filter:<br /> %%{ldap_filter, "(objectClass=shadowAccount)"}.</p> <p>%%<br /> %% Anonymous login support:<br /> %% auth_method: anonymous<br /> %% anonymous_protocol: sasl_anon | login_anon | both<br /> %% allow_multiple_connections: true | false<br /> %%<br /> %%{host_config, "public.example.org", [{auth_method, anonymous},<br /> %% {allow_multiple_connections, false},<br /> %% {anonymous_protocol, sasl_anon}]}.<br /> %%<br /> %% To use both anonymous and internal authentication:<br /> %%<br /> %%{host_config, "public.example.org", [{auth_method, [internal, anonymous]}]}.<br /> %%{host_config, "realtime.sgiggle.com", [{auth_method, [internal,anonymous]}, {anonymous_protocol, sasl_anon}]}.</p> <p>%%%. ==============<br /> %%%' DATABASE SETUP</p> <p>%% ejabberd by default uses the internal Mnesia database,<br /> %% so you do not necessarily need this section.<br /> %% This section provides configuration examples in case<br /> %% you want to use other database backends.<br /> %% Please consult the ejabberd Guide for details on database creation.</p> <p>%%<br /> %% MySQL server:<br /> %%<br /> {odbc_server, {mysql, server, 3306, db, user, password}}.<br /> %%<br /> %% If you want to specify the port:<br /> %%{odbc_server, {mysql, "server", 1234, "database", "username", "password"}}.</p> <p>%%<br /> %% PostgreSQL server:<br /> %%<br /> %%{odbc_server, {pgsql, "server", "database", "username", "password"}}.<br /> %%<br /> %% If you want to specify the port:<br /> %%{odbc_server, {pgsql, "server", 1234, "database", "username", "password"}}.<br /> %%<br /> %% If you use PostgreSQL, have a large database, and need a<br /> %% faster but inexact replacement for "select count(*) from users"<br /> %%<br /> %%{pgsql_users_number_estimate, true}.</p> <p>%%<br /> %% ODBC compatible or MSSQL server:<br /> %%<br /> %%{odbc_server, "DSN=ejabberd;UID=ejabberd;PWD=ejabberd"}.</p> <p>%%<br /> %% Number of connections to open to the database for each virtual host<br /> %%<br /> %%{odbc_pool_size, 10}.</p> <p>%%<br /> %% Interval to make a dummy SQL request to keep the connections to the<br /> %% database alive. Specify in seconds: for example 28800 means 8 hours<br /> %%<br /> %%{odbc_keepalive_interval, undefined}.</p> <p>%%%. ===============<br /> %%%' TRAFFIC SHAPERS</p> <p>%%<br /> %% The "normal" shaper limits traffic speed to 1000 B/s<br /> %%<br /> {shaper, normal, {maxrate, 50000000}}.</p> <p>%%<br /> %% The "fast" shaper limits traffic speed to 50000 B/s<br /> %%<br /> {shaper, fast, {maxrate, 50000000}}.</p> <p>%%<br /> %% This option specifies the maximum number of elements in the queue<br /> %% of the FSM. Refer to the documentation for details.<br /> %%<br /> {max_fsm_queue, 10000}.</p> <p>%%%. ====================<br /> %%%' ACCESS CONTROL LISTS</p> <p>%%<br /> %% The 'admin' ACL grants administrative privileges to XMPP accounts.<br /> %% You can put here as many accounts as you want.<br /> %%<br /> %%{acl, admin, {user, "aleksey", "localhost"}}.<br /> %%{acl, admin, {user, "ermine", "example.org"}}.</p> <p>%%<br /> %% Blocked users<br /> %%<br /> %%{acl, blocked, {user, "baduser", "example.org"}}.<br /> %%{acl, blocked, {user, "test"}}.</p> <p>%%<br /> %% Local users: don't modify this line.<br /> %%<br /> {acl, local, {user_regexp, ""}}.</p> <p>%%<br /> %% More examples of ACLs<br /> %%<br /> %%{acl, jabberorg, {server, "jabber.org"}}.<br /> %%{acl, aleksey, {user, "aleksey", "jabber.ru"}}.<br /> %%{acl, test, {user_regexp, "^test"}}.<br /> %%{acl, test, {user_glob, "test*"}}.</p> <p>%%<br /> %% Define specific ACLs in a virtual host.<br /> %%<br /> {host_config, "realtime.sgiggle.com",<br /> [<br /> {acl, admin, {user, "admin", "realtime.sgiggle.com"}}<br /> ]<br /> }.</p> <p>%%%. ============<br /> %%%' ACCESS RULES</p> <p>%% Maximum number of simultaneous sessions allowed for a single user:<br /> {access, max_user_sessions, [{10, all}]}.</p> <p>%% Maximum number of offline messages that users can have:<br /> {access, max_user_offline_messages, [{5000, admin}, {100, all}]}.</p> <p>%% This rule allows access only for local users:<br /> {access, local, [{allow, local}]}.</p> <p>%% Only non-blocked users can use c2s connections:<br /> {access, c2s, [{deny, blocked},<br /> {allow, all}]}.</p> <p>%% For C2S connections, all users except admins use the "normal" shaper<br /> {access, c2s_shaper, [{none, admin},<br /> {normal, all}]}.</p> <p>%% All S2S connections use the "fast" shaper<br /> {access, s2s_shaper, [{fast, all}]}.</p> <p>%% Only admins can send announcement messages:<br /> {access, announce, [{allow, admin}]}.</p> <p>%% Only admins can use the configuration interface:<br /> {access, configure, [{allow, admin}]}.</p> <p>%% Admins of this server are also admins of the MUC service:<br /> {access, muc_admin, [{allow, admin}]}.</p> <p>%% Only accounts of the local ejabberd server can create rooms:<br /> {access, muc_create, [{allow, local}]}.</p> <p>%% All users are allowed to use the MUC service:<br /> {access, muc, [{allow, all}]}.</p> <p>%% Only accounts on the local ejabberd server can create Pubsub nodes:<br /> {access, pubsub_createnode, [{allow, local}]}.</p> <p>%% In-band registration allows registration of any possible username.<br /> %% To disable in-band registration, replace 'allow' with 'deny'.<br /> {access, register, [{allow, all}]}.</p> <p>%% By default the frequency of account registrations from the same IP<br /> %% is limited to 1 account every 10 minutes. To disable, specify: infinity<br /> %%{registration_timeout, 600}.</p> <p>%%<br /> %% Define specific Access Rules in a virtual host.<br /> %%<br /> %%{host_config, "localhost",<br /> %% [<br /> %% {access, c2s, [{allow, admin}, {deny, all}]},<br /> %% {access, register, [{deny, all}]}<br /> %% ]<br /> %%}.</p> <p>%%%. ================<br /> %%%' DEFAULT LANGUAGE</p> <p>%%<br /> %% language: Default language used for server messages.<br /> %%<br /> {language, "en"}.</p> <p>%%<br /> %% Set a different default language in a virtual host.<br /> %%<br /> %%{host_config, "localhost",<br /> %% [{language, "ru"}]<br /> %%}.</p> <p>%%%. =======<br /> %%%' CAPTCHA</p> <p>%%<br /> %% Full path to a script that generates the image.<br /> %%<br /> %%{captcha_cmd, "/lib/ejabberd/priv/bin/captcha.sh"}.</p> <p>%%<br /> %% Host part of the URL sent to the user.<br /> %%<br /> %%{captcha_host, "example.org:5280"}.</p> <p>%%%. =======<br /> %%%' MODULES</p> <p>%%<br /> %% Modules enabled in all ejabberd virtual hosts.<br /> %%<br /> {modules,<br /> [<br /> {mod_adhoc, []},<br /> {mod_announce, [{access, announce}]}, % recommends mod_adhoc<br /> {mod_caps, []},<br /> {mod_configure,[]}, % requires mod_adhoc<br /> {mod_disco, []},<br /> %%{mod_echo, [{host, "echo.localhost"}]},<br /> {mod_irc, []},<br /> {mod_http_bind, []},<br /> %%{mod_http_fileserver, [<br /> %% {docroot, "/var/www"},<br /> %% {accesslog, "/var/log/ejabberd/access.log"}<br /> %% ]},<br /> {mod_last, []},<br /> {mod_muc, [<br /> %%{host, "conference.@HOST@"},<br /> {access, muc},<br /> {access_create, muc_create},<br /> {access_persistent, muc_create},<br /> {access_admin, muc_admin}<br /> ]},<br /> %%{mod_muc_log,[]},<br /> {mod_offline, [{access_max_user_messages, max_user_offline_messages}]},<br /> {mod_ping, [{send_pings, true}, {ping_interval, 900}, {timeout_action, kill}]},<br /> {mod_privacy, []},<br /> {mod_private, []},<br /> %%{mod_proxy65,[]},<br /> {mod_pubsub, [<br /> {access_createnode, pubsub_createnode},<br /> {ignore_pep_from_offline, true}, % reduces resource comsumption, but XEP incompliant<br /> %%{ignore_pep_from_offline, false}, % XEP compliant, but increases resource comsumption<br /> {last_item_cache, false},<br /> {plugins, ["flat", "hometree", "pep"]} % pep requires mod_caps<br /> ]},<br /> {mod_register, [<br /> %%<br /> %% After successful registration, the user receives<br /> %% a message with this subject and body.<br /> %%<br /> {welcome_message, {"Welcome!",<br /> "Hi.\nWelcome to this XMPP server."}},</p> <p> %%<br /> %% When a user registers, send a notification to<br /> %% these XMPP accounts.<br /> %%<br /> %%{registration_watchers, ["admin1@example.org"]},</p> <p> {access, register}<br /> ]},<br /> {mod_roster, []},<br /> %%{mod_service_log,[]},<br /> {mod_shared_roster,[]},<br /> {mod_stats, []},<br /> {mod_time, []},<br /> {mod_vcard, []},<br /> {mod_version, []}<br /> ]}.</p> <p>%%<br /> %% Enable modules with custom options in a specific virtual host<br /> %%<br /> %%{host_config, "localhost",<br /> %% [{{add, modules},<br /> %% [<br /> %% {mod_echo, [{host, "mirror.localhost"}]}<br /> %% ]<br /> %% }<br /> %% ]}.</p> <p>{registration_timeout, infinity}.</p> <p>%%%.<br /> %%%'</p> <p>%%% $Id$</p> <p>%%% Local Variables:<br /> %%% mode: erlang<br /> %%% End:<br /> %%% vim: set filetype=erlang tabstop=8 foldmarker=%%%',%%%. foldmethod=marker:</p> <p>ejabberdctl.cfg</p> <p>#<br /> # In this file you can configure options that are passed by ejabberdctl<br /> # to the erlang runtime system when starting ejabberd<br /> #</p> <p>#' POLL: Kernel polling ([true|false])<br /> #<br /> # The kernel polling option requires support in the kernel.<br /> # Additionally, you need to enable this feature while compiling Erlang.<br /> #<br /> # Default: true<br /> #<br /> POLL=true</p> <p>#.<br /> #' SMP: SMP support ([enable|auto|disable])<br /> #<br /> # Explanation in Erlang/OTP documentation:<br /> # enable: starts the Erlang runtime system with SMP support enabled.<br /> # This may fail if no runtime system with SMP support is available.<br /> # auto: starts the Erlang runtime system with SMP support enabled if it<br /> # is available and more than one logical processor are detected.<br /> # disable: starts a runtime system without SMP support.<br /> #<br /> # Default: auto<br /> #<br /> SMP=enable</p> <p>#.<br /> #' ERL_MAX_PORTS: Maximum number of simultaneously open Erlang ports<br /> #<br /> # ejabberd consumes two or three ports for every connection, either<br /> # from a client or from another Jabber server. So take this into<br /> # account when setting this limit.<br /> #<br /> # Default: 32000<br /> # Maximum: 268435456<br /> #<br /> ERL_MAX_PORTS=5000000</p> <p>#.<br /> #' FIREWALL_WINDOW: Range of allowed ports to pass through a firewall<br /> #<br /> # If Ejabberd is configured to run in cluster, and a firewall is blocking ports,<br /> # it's possible to make Erlang use a defined range of port (instead of dynamic<br /> # ports) for node communication.<br /> #<br /> # Default: not defined<br /> # Example: 4200-4210<br /> #<br /> #FIREWALL_WINDOW=9000-9100</p> <p>#.<br /> #' ERL_PROCESSES: Maximum number of Erlang processes<br /> #<br /> # Erlang consumes a lot of lightweight processes. If there is a lot of activity<br /> # on ejabberd so that the maximum number of processes is reached, people will<br /> # experiment greater latency times. As these processes are implemented in<br /> # Erlang, and therefore not related to the operating system processes, you do<br /> # not have to worry about allowing a huge number of them.<br /> #<br /> # Default: 250000<br /> # Maximum: 268435456<br /> #<br /> ERL_PROCESSES=5000000</p> <p>#.<br /> #' ERL_MAX_ETS_TABLES: Maximum number of ETS and Mnesia tables<br /> #<br /> # The number of concurrent ETS and Mnesia tables is limited. When the limit is<br /> # reached, errors will appear in the logs:<br /> # ** Too many db tables **<br /> # You can safely increase this limit when starting ejabberd. It impacts memory<br /> # consumption but the difference will be quite small.<br /> #<br /> # Default: 1400<br /> #<br /> ERL_MAX_ETS_TABLES=40000</p> <p>#.<br /> #' ERL_OPTIONS: Additional Erlang options<br /> #<br /> # The next variable allows to specify additional options passed to erlang while<br /> # starting ejabberd. Some useful options are -noshell, -detached, -heart. When<br /> # ejabberd is started from an init.d script options -noshell and -detached are<br /> # added implicitly. See erl(1) for more info.<br /> #<br /> # It might be useful to add "-pa /usr/local/lib/ejabberd/ebin" if you<br /> # want to add local modules in this path.<br /> #<br /> # Default: ""<br /> #<br /> #ERL_OPTIONS=""</p> <p>#.<br /> #' ERLANG_NODE: Erlang node name<br /> #<br /> # The next variable allows to explicitly specify erlang node for ejabberd<br /> # It can be given in different formats:<br /> # ERLANG_NODE=ejabberd<br /> # Lets erlang add hostname to the node (ejabberd uses short name in this case)<br /> # ERLANG_NODE=ejabberd@hostname<br /> # Erlang uses node name as is (so make sure that hostname is a real<br /> # machine hostname or you'll not be able to control ejabberd)<br /> # ERLANG_NODE=ejabberd@hostname.domainname<br /> # The same as previous, but erlang will use long hostname<br /> # (see erl (1) manual for details)<br /> #<br /> # Default: ejabberd<br /> #<br /> ERLANG_NODE=</p> <p>#.<br /> #' EJABBERD_PID_PATH: ejabberd PID file<br /> #<br /> # Indicate the full path to the ejabberd Process identifier (PID) file.<br /> # If this variable is defined, ejabberd writes the PID file when starts,<br /> # and deletes it when stops.<br /> # Remember to create the directory and grant write permission to ejabberd.<br /> #<br /> # Default: don't write PID file<br /> #<br /> #EJABBERD_PID_PATH=/var/run/ejabberd/ejabberd.pid</p> <p>#.<br /> #'<br /> # vim: foldmarker=#',#. foldmethod=marker:</p> Tue, 28 Sep 2010 08:14:42 +0000 scaleme comment 56666 at https://www.ejabberd.im You are seeing those errors https://www.ejabberd.im/node/4316#comment-56649 <p>You are seeing those errors because a mnesia creates an ets table per transaction. BTW, I don't know if odbc driver uses mnesia or not, and I *highly* recommend to use mysql driver.<br /> Also, could you please show your config?</p> Thu, 23 Sep 2010 06:11:44 +0000 zinid comment 56649 at https://www.ejabberd.im We are using mysql through https://www.ejabberd.im/node/4316#comment-56647 <p>We are using mysql through the odbc driver. I'm not sure what ejabberd writes to mnesia when using odbc drivers.</p> <p>I've increased it to 200000 and I'm still seeing errors.</p> <p>Stuck at 250K connections</p> Wed, 22 Sep 2010 17:59:51 +0000 scaleme comment 56647 at https://www.ejabberd.im Re: ejabberd 2.1.4 crashes during stress test https://www.ejabberd.im/node/4316#comment-56635 <p>1) It seems like even 60000 is not enough, try to increase.<br /> 2) You should use SQL on the heavily loaded server (to avoid those mnesia warnings).</p> Tue, 21 Sep 2010 11:28:16 +0000 zinid comment 56635 at https://www.ejabberd.im