We have a Java XML-RPC server running under Windows that talks to both Java and C++ clients. We run out of sockets after about 5,000 connections have been made. When I do a netstat, I see the sockets sitting it TIME_WAIT and CLOSE_WAIT.

The only message on this topic I found is from March of this year:

It could be that you are seeing an exhaustion of the number of sockets available. If the clients connect, do a transaction and then disconnect then you will be recycling a lot of sockets. A socket is not immediately reusable, it has to sit in the TIME_WAIT state for a period before it becomes free for reuse.

Check the setting for the duration of TIME_WAIT, it should be about 60 seconds.

Increase the number of sockets available.

Check that your clients are closing the sockets properly after use.

Setting the TIME_WAIT value in the registry to 30 s seemed to leave more of the packets in CLOSE_WAIT instead of TIME_WAIT, but didn't prevent socket exhaustion.


I know these are newbie questions, but could someone explain two things to me:

(a) What does it mean, "check that your clients are closing the sockets properly after use"? Isn't it the responsibility of the XML-RPC library to close the sockets? I wouldn't even know *how* to fail to close the sockets, since I'm not opening them - all I do is call the "execute" method. But surely this couldn't be a bug in the library, could it?

(b) Where does one go to increase the number of sockets available? Is this done in the registry? the xml-rpc library? someplace else?

- dam



Reply via email to