Hi Jerome, I believe I have found the cause of our problem. We use Restlet Client by instantiating it every time, for example, for (int i = 0; i < 10000000; i++) { Client c = new Client(); .... Response response = c.handle(request); response.release(); } we end up creating a downstream HttpClient on every client. When release() is called, the socket connection is released back to the HttpConnectionManager. HttpConnectionManager does not close the socket. However, due to garbage collection, at some point the underlying socket is closed out. It happens some times and not others, i.e., via the luck of GC running. If we however, hold a Reference of every client that is instantiated, then we can easily reproduce the open file handle issue as GC will not free the underlying socket and we can see eventually reach a point where all the available file handles are consumed. That said, the direction of preference seems to point to using a single instance of Restlet's Client class and setting the "maxConnectionsPerHost" to some appropriate value. One concern that I have is whether Restlet's Client is designed to be thread safe so that multiple threads can utilize the same instance? In other words, is singleton usage the recommended pattern for using the client? Thanks much, Sanjay
> From: [EMAIL PROTECTED]> To: discuss@restlet.tigris.org> Date: Wed, 15 Oct > 2008 08:46:06 +0200> Subject: RE: Assistance and Question> > > Hi Sanjay,> > > As a first step, I would highly recommend moving to 1.1 RC2 or a more recent> > snapshot. There is a good chance that it will fix your issue.> > If not, > we'll investigate more.> > Best regards,> Jérôme Louvel> --> Restlet ~ > Founder and Lead developer ~ http://www.restlet.org> Noelios Technologies ~ > Co-founder ~ http://www.noelios.com> > > -----Message d'origine-----> De : > Sanjay Acharya [mailto:[EMAIL PROTECTED] > Envoyé : mercredi 15 octobre 2008 > 02:39> À : discuss@restlet.tigris.org> Objet : Assistance and Question> > > > Hi,> > I am using Restlet version 1.1 m1. There are times when we run out of > open> file handles in stage environment with "too many open file handles" > error. I> am also using the JaxbRepresentation to marshall the data. > I am > trying to recreate the issue related to> > http://restlet.tigris.org/issues/show_bug.cgi?id=439 and not sure how to do> > the same. I would like to be able to recreate a state where connections are> > left in > "CLOSE_WAIT and FIN_WAIT_2 state" by the client.> > I have limited > the number of open file handles to 200 for the user. > > Any assistance to be > able to duplicate the issue would be great.> Thanks,> Sanjay> > Code on > Resource class:> @Override public void post(Representation representation) {> > > String greeting = "Hello thgere";> > Person p = new Person();> > p.setFirstName("Foo");> p.setLastName("Bar");> > // A Large address list> > p.setAddresses(buildAddress());> SayHelloResponse resp = new> > SayHelloResponse().withPerson(p).withGreeting(greeting);> > > JaxbRepresentation responseRep = new> > JaxbRepresentation(MediaType.APPLICATION_XML, resp);> > > getResponse().setEntity(responseRep);> > > getResponse().setStatus(Status.SUCCESS_OK);> }> > Code on Client class:> > Person p = new Person()....> ....> SayHelloRequest sayHelloRequest = new > SayHelloRequest().withPerson(person);> > Request restRequest = > createRequest();> request.setEntity(new > JaxbRepresentation(MediaType.APPLICATION_XML,> sayHelloRequest));> Response > response = client.handle(restRequest);> response.getEntity().release();> > _________________________________________________________________> See how > Windows connects the people, information, and fun that are part of> your > life.> http://clk.atdmt.com/MRT/go/msnnkwxp1020093175mrt/direct/01/=> _________________________________________________________________ Want to do more with Windows Live? Learn “10 hidden secrets” from Jamie. http://windowslive.com/connect/post/jamiethomson.spaces.live.com-Blog-cns!550F681DAD532637!5295.entry?ocid=TXT_TAGLM_WL_domore_092008