On Fri, 11 Mar 2016 07:19:27 -0700, Tim Bain <tb...@alumni.duke.edu> wrote:
>I thought TIME_WAIT was the state after the application had closed the >socket but before the OS had disposed it, so this may be a Solaris question. My understanding (which may be wrong) is that the end which initiated the closedown may end up in a TIME_WAIT state. In this case it should be client rather than the server IMHO. If this was the situation then I would not see this problem. >On Mar 11, 2016 4:55 AM, "spamtrap" <nospam.1.friedbad...@spamgourmet.com> >wrote: > >> On Thu, 10 Mar 2016 16:13:32 +0000, "James A. Robinson" >> <j...@highwire.org> wrote: >> >> It happens infrequently and unpredictibly. For example sometimes it >> fails after 25 times and sometimes it works for several 100 before >> going wrong. >> >> Another thing is that program works OK on Linux. It's only on Solaris >> that this problem arrises. >> >> netstat does show a lot of connections in TIME_WAIT state. I don't >> know what control I have over the closedown -- I assume this is done >> internally by ActiveMQ-CPP? >> >> >You don't say how frequently it performs this action? If it is frequent, >> >and I were debugging it, the first thing I would check for would be that >> >you haven't run out of socket filehandles. On a unix system running >> >something like "netstat -nt" can tell you what state the socket >> filehandles >> >are in. If there are too many in the TIME_WAIT state, for example, it can >> >exhaust your available filehandles and it won't be able to make a new >> >socket connection until the OS allows them to expire. This exhaustion can >> >easily happen if your program is only using a limited set of ports on the >> >client side as well, and I could imagine that might be logged as an >> >"address in use" error. >> > >> >Jim >> > >> > >> >On Thu, Mar 10, 2016 at 8:07 AM Timothy Bish <tabish...@gmail.com> wrote: >> > >> >> On 03/10/2016 10:37 AM, spamtrap wrote: >> >> > [ActiveMQ-CPP v3.9.0] >> >> > >> >> > We have a c++ program which connects to a broker, sends a message to a >> >> > topic and then closes the connections & exits. Every now and then it >> >> > fails to connect reporting a "Address already in use" exception >> >> > (based on ex.what()). >> >> > >> >> > The code is like this: >> >> > >> >> > ----- cut ------ >> >> > try { >> >> > pConnectionFactory = >> >> > cms::ConnectionFactory::createCMSConnectionFactory( >> >> > brokerURI); >> >> > pConnection = pConnectionFactory->createConnection(); >> >> > } catch (cms::CMSException &ex) >> >> > { >> >> > fprintf(stderr, "CMSException: \n"); >> >> > ex.printStackTrace(); >> >> > ... >> >> > } >> >> > ----- cut ------ >> >> > >> >> > ex.printStackTrace prints nothing even though I am using the following >> >> > connection string (broker URI): >> >> > "tcp://localhost:61616?wireFormat.stackTraceEnabled=true" >> >> > >> >> > How can I get more information about this problem? >> >> > >> >> > >> >> > >> >> You'd need to do some debugging on the client end to see what is causing >> >> this, not been reported before. >> >> >> >> -- >> >> Tim Bish >> >> twitter: @tabish121 >> >> blog: http://timbish.blogspot.com/ >> >> >> >> >> >> >>