http_bind and high load

I have written Java client for http_bind. Clients logins as much users as he can(in seperate threads) and sends as much messages as he can(~300 logged users and ~600 sent messages in 15 seconds) After 15 seconds server starts to send 404 File Not Found messages and logs this message to log file.

=ERROR REPORT==== 2008-03-06 16:54:06 ===
** State machine <0.2434.0> terminating 
** Last message in was {'$gen_sync_all_state_event',
                           {<0.2438.0>,#Ref<0.0.0.30682>},
                           {http_put,
                               1798441521,
                               [{"rid","1798441521"},
                                {"sid",
                                 "d6a8d1a56df3baaf91f4dcfe087a720e58689e41"},
                                {"xmlns",
                                 "http://jabber.org/protocol/httpbind"}],
                               [],
                               1,
                               []}}
** When State == loop
**      Data  == {state,"d6a8d1a56df3baaf91f4dcfe087a720e58689e41",
                        1798441522,
                        [],
                        [],
                        [],
                        false,
                        <0.2435.0>,
                        0,
                        undefined,
                        undefined,
                        1204818846890005,
                        #Ref<0.0.0.30684>,
                        0,
                        [{hbr,1798441522,[],[],[]}]}
** Reason for termination = 
** {{badmatch,[]},
    [{ejabberd_http_bind,handle_sync_event,4},
     {gen_fsm,handle_msg,7},
     {proc_lib,init_p,5}]}

Do you have an idea how can I avoid this error.

The termination is done in

The termination is done in the file ejabberd_http_bind.erl in the function clause that starts with:

handle_sync_event({http_put, Rid, Attrs, Payload, Hold, StreamTo},
		  _From, StateName, StateData) ->

Unfortunately, this function is very large (177 lines of code), so it is difficult to know the exact reason of {badmatch,[]} without some debugging.

A simple way to debug the code would be to add lines like this in that function:

   ?INFO_MSG("we are here 1 ~n, []),

And check up to which one gets executed.

Syndicate content