2016-04-15 7 views
0

ich in der Lage gewesen, um mehr als eine Million Benutzer zu skalieren mit How to scale ejabberd Server machine on CentOS to handle 200 K connections?Was ist der Grund für ejabberd Crash in Verbindung mit Redis?

ich jetzt Redis als Backend für ejabberd verwenden.

Nach einer Million Benutzern, ich die folgende Fehlermeldung erhalten:

2016-04-15 12:50:24 =ERROR REPORT==== 
** State machine <0.24986.34> terminating 
** Last event in was {xmlstreamelement,{xmlel,<<"iq">>,[{<<"type">>,<<"set">>},{<<"id">>,<<"820919">>}],[{xmlel,<<"bind">>,[{<<"xmlns">>,<<"urn:ietf:params:xml:ns:xmpp-bind">>}],[{xmlel,<<"resource">>,[],[{xmlcdata,<<"tsung">>}]}]}]}} 
** When State == wait_for_bind 
**  Data == {state,{socket_state,gen_tcp,#Port<0.418817>,<0.24984.34>},ejabberd_socket,#Ref<0.0.36.113046>,false,<<"2087913259">>,undefined,c2s,c2s_shaper,false,true,false,false,[verify_none,compression_none,{protocol_options,<<"no_sslv3">>},{certfile,<<"/opt/ejabberd-15.11/conf/ejabberd.pem">>}],true,undefined,<<"mac52944bec562c9c82eae8e818abdea7e4b">>,<<"ejabberd-benchmark">>,<<>>,{{1460,704802,37025},<0.24986.34>},{pres_t,0},{pres_f,0},{pres_a,0},undefined,undefined,{userlist,none,[],false},unknown,ejabberd_auth_external,{{10,245,32,24},29307},[],active,[],inactive,undefined,undefined,1000,undefined,300,300,true,0,0,<<>>} 
** Reason for termination = 
** {timeout,{gen_server,call,[ejabberd_redis_client,{request,[[<<"*">>,"2",<<"\r\n">>],[[<<"$">>,"7",<<"\r\n">>,<<"HGETALL">>,<<"\r\n">>],[<<"$">>,"67",<<"\r\n">>,<<"ejabberd:sm:[email protected]">>,<<"\r\n">>]]]},20000]}} 

Antwort

1

Dieser Fehler bedeutet einfach, dass Ihr System gesättigt ist. Es bedeutet nichts für sich. Sie müssen analysieren, um Engpässe für Ihren Anwendungsfall zu finden, die Plattform optimieren und möglicherweise den Code optimieren.