Wildfire 3.2.3 Connection Issues

Yesterday i upgraded to wildfire 3.2.3, and noticed that clients were getting disconnected from the server every 5 - 10 minutes or so. It seemed to happen with a handful of clients. The problem happened with both starttls and old style ssl connections.

Reverting back to 3.2.2 solved the problem. Has anyone else seen this?

Same here, since 3.2.3 client disconnection issues like crazy. iChat for sure with SSL. Every 5-10 minutes like clockwork, just like you say.

Edit: It could have something to do with the ‘‘Removing Idle Connections’’ fix in 3.2.3. See here: http://www.igniterealtime.org/issues/browse/JM-993

It maybe possible to put a custom value in xmpp.client.idle properties. I believe it controls the timeout for the above. Setting to a large value would “fix” the problem, short term. I think.

Message was edited by: majorsl

Yes, same thing happening here - I’‘m on iChat as well, but I’'m not using SSL. Disconnection every 5 minutes or so, but I can reconnect just fine afterwards.

I upgraded from 3.2.0, and have rolled back.

Hey guys,

I don’'t have iChat here to test and see what is going on. Anyway, I think that majorsl is right and the change we made to reduce the idle timeout is the main reason for this problem. I would say that iChat is not sending hearbeats to the server to keep the connection alive so the server is considering the connection idle after 2 minutes (default value) of no traffic. Instead of rolling back to an old version you should try setting the system property xmpp.client.idle to a high value (in milliseconds). Even setting it to 30 minutes (old value) may not be enough depending on your usage. Note however that setting a high value is not recommended since the server will fail to quickly detect connections that are actually lost but for some reason the server failed to detect from the TCP layer.

Regards,

– Gato

I noticed this problem with Trillian v3.1, Spark and Gaim.

Changing the xmpp.client.idle to a larger value solved the problem for me.

Me too…I bumped xmpp.client.idle to 1800000 (30 min), and two test iChat clients have stayed connected all night. I’'m checking with my Apple SE to see if he can find out how often iChat sends keepalives to jabber servers, so hopefully I can come back with a more reasonable timeout value.

Update: I dropped xmpp.client.idle to 600000 (10 min.), and no problems so far with iChat clients. Still waiting to hear from the Apple guys.

Update: Still working with xmpp.client.idle = 300000 (5 min). iChat clients are running Mac OS X 10.4.9; I haven’'t tested with earlier versions.

That is valuable information. I can certainly change the default value to 5 minutes (from 2 minutes) if more clients are happy with that default value.

Thanks,

– Gato

I still had occasional disconnects of iChat clients with xmpp.client.idle at five minutes, so I bumped it to six minutes. Until I get a more official number from Apple, I’'m going to say that something between 5-6 minutes would be a reasonable default.

I have to express my appreciation for this project. I’‘ve been mucking around with jabberd and others for quite some time trying to make them do what Openfire does by default. I wouldn’‘t say it’‘s quite plug-and-play, but it’'s darn close, and light years ahead of any other chat server, open source or otherwise. You guys are doing an awesome job.

For my server, I’'d rather not have any timeout at all. I have users that stay connected over the weekend and expect to have it “live” when they come back Monday. A setting to disable the timeout entirely would be appreciated.

Hey Shane,

This feature is not really about kicking users with no activity but of detecting dead clients. Sometimes the server fails to detect that a socket connection was lost and the client may remain as connected forever. The workaround for that is to set a max time value of no activity over the socket. Most clients send heartbeats to the server to keep the connection alive and tell the server that they are still there.

Regards,

– Gato

Yes, precisely…I’‘m testing iChat clients by connecting, then just letting the client sit, no messages being sent. If xmpp.client.idle is at a good value, then iChat should stay connected in this way indefinitely, but if the connection is broken for some reason (iChat crashes, someone cuts a wire, etc.) then the server should detect it within a reasonable amount of time and close the connection to avoid dropped messages and other problems. The catch is that there’'s really no standard for how often a client sends a heartbeat to the server, so the developers had to make an educated guess, which in this case was too low.

What is the preferred way of sending a heartbeat to the server? Please forgive me if there is an obvious answer to this question that I have missed. We are completely new to XMPP and writing a client for internal use.

Thanks,

CJL

Hey CJL,

Writing a whitespace would be fine. In Smack we are sending a whitespace every 30 seconds after no activity has been detected. That means that if the user keeps using the connection then no heartbeat is sent since the traffic per se means that the connection is being used.

Regards,

– Gato

Where do I set the “xmpp.client.idle” timeout value? Some of our iChat users are disconnecting randomly. We are using Openfire 3.3.1.

Thanks in advance for any feedback.

Message was edited by: pcjackson06

Did you find the place to set this property ? I am having the same issue and logged into the server. I dont find it under “System Properties”. Should I create a new Property for “xmpp.client.idle” ?

Here is how I did it. I went to the web console and under Server->System Properties added a xmpp.client.idle Property. I set it to -1 to disable it so clients never disconnect.

Message was edited by: SNatarajan