RE: HttpManager hangs.

BrIlliant!

By adding the setMaxConnections(100); line

            HttpManager     manager = HttpManager.getManager() ;
            manager.setMaxConnections(100);

it works fine.

I'm guessing the garbage collection doesn't have time to clean up the
connections before allowing re-use?

Thanks very much,
OWen


> -----Original Message-----
> From: Yves Lafon [mailto:ylafon@w3.org]
> Sent: 16 August 2001 17:19
> To: Owen Roberts
> Cc: Harmeet; www-jigsaw@w3.org
> Subject: RE: HttpManager hangs.
> 
> 
> On Thu, 16 Aug 2001, Owen Roberts wrote:
> 
> > Hi - heres a stack trace of the process when it has locked up.
> > I just hit exit on the command prompt - forcing this text up.
> 
> Can you retry with a modification of the
> org.w3c.www.protocol.http.connections.max property?
> By default it should be around 5, please try with something 
> better like
> 100
> (edit http-server.props, or it should be available from the 
> Proxy perperty
> (max connections).
> Does it stays forever that way or is the socket timeout 
> kicking in at some
> point?
> 
> >
> > Thanks ,
> > OWen
> >
> >
> > start a get...
> > complete a get...
> > start a get...
> > complete a get...
> > start a get...
> > complete a get...
> > start a get...
> > complete a get...
> > start a get...
> > complete a get...
> > start a get...
> >
> > Full thread dump Classic VM (JDK-1.2.2-001-Symc-092, native 
> threads):
> >     "SymcJIT-LazyCompilation-0" (TID:0x14de6e8, 
> sys_thread_t:0x4a49140,
> > state:CW
> > , native ID:0x3a8) prio=1
> >         at 
> SymantecJITCompilationThread.run(JITcompilationthread.java,
> > Compiled
> > Code)
> >     "SymcJIT-LazyCompilation-PA" (TID:0x14de6a8, 
> sys_thread_t:0x4a48008,
> > state:C
> > W, native ID:0x618) prio=10
> >         at java.lang.Object.wait(Object.java:424)
> >         at 
> SymantecJITCompilationThread.run(JITcompilationthread.java,
> > Compiled
> > Code)
> >     "Finalizer" (TID:0x14d9320, sys_thread_t:0x498e1c8, 
> state:CW, native
> > ID:0x76
> > 4) prio=8
> >         at 
> java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:112)
> >         at 
> java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127)
> >         at 
> java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:174)
> >     "Reference Handler" (TID:0x14d93b0, 
> sys_thread_t:0x498a2e0, state:CW,
> > native
> >  ID:0x44c) prio=10
> >         at java.lang.Object.wait(Object.java:424)
> >         at 
> java.lang.ref.Reference$ReferenceHandler.run(Reference.java:114)
> >     "Signal dispatcher" (TID:0x14d93e0, 
> sys_thread_t:0x49891f8, state:R,
> > native
> > ID:0x6c4) prio=5
> >     "main" (TID:0x14d91e0, sys_thread_t:0x2f8198, state:CW, 
> native ID:0x608)
> > pri
> > o=5
> >         at java.lang.Object.wait(Object.java:424)
> >         at
> > 
> org.w3c.www.protocol.http.HttpManager.waitForConnection(HttpManager.j
> > ava:597)
> >         at
> > 
> org.w3c.www.protocol.http.HttpBasicServer.getConnection(HttpBasicServ
> > er.java, Compiled Code)
> >         at
> > 
> org.w3c.www.protocol.http.HttpBasicServer.runRequest(HttpBasicServer.
> > java, Compiled Code)
> >         at
> > 
> org.w3c.www.protocol.http.HttpManager.runRequest(HttpManager.java, Co
> > mpiled Code)
> >         at testProblem.main(testProblem.java, Compiled Code)
> > Monitor Cache Dump:
> >     SymantecJITCompilationThread@14DE6E8/1536418: <unowned>
> >         Waiting to be notified:
> >             "SymcJIT-LazyCompilation-PA" (0x4a48008)
> >     java.lang.ref.ReferenceQueue$Lock@14D9338/150ED78: <unowned>
> >         Waiting to be notified:
> >             "Finalizer" (0x498e1c8)
> >     org.w3c.www.protocol.http.HttpManager@150B4C8/1642AB0: <unowned>
> >         Waiting to be notified:
> >             "main" (0x2f8198)
> >     java.lang.ref.Reference$Lock@14D93C0/150E8A8: <unowned>
> >         Waiting to be notified:
> >             "Reference Handler" (0x498a2e0)
> > Registered Monitor Dump:
> >     SymcJIT Method Monitor: <unowned>
> >     SymcJIT Method Monitor: <unowned>
> >     SymcJIT Lazy Queue Lock: <unowned>
> >         Waiting to be notified:
> >             "SymcJIT-LazyCompilation-0" (0x4a49140)
> >     SymcJIT Method Monitor: <unowned>
> >     SymcJIT Method List Monitor: <unowned>
> >     SymcJIT Lock: <unowned>
> >     utf8 hash table: <unowned>
> >     JNI pinning lock: <unowned>
> >     JNI global reference lock: <unowned>
> >     BinClass lock: <unowned>
> >     Class linking lock: <unowned>
> >     System class loader lock: <unowned>
> >     Code rewrite lock: <unowned>
> >     Heap lock: <unowned>
> >     Monitor cache lock: owner "Signal dispatcher" 
> (0x49891f8) 1 entry
> >     Thread queue lock: owner "Signal dispatcher" (0x49891f8) 1 entry
> >     Monitor registry: owner "Signal dispatcher" (0x49891f8) 1 entry
> >
> >
> >
> > changing GET to a POST ..
> >
> > start a get...
> > complete a get...
> > start a get...
> > complete a get...
> > start a get...
> > complete a get...
> > start a get...
> > complete a get...
> > start a get...
> > complete a get...
> > start a get...
> >
> > Full thread dump Classic VM (JDK-1.2.2-001-Symc-092, native 
> threads):
> >     "SymcJIT-LazyCompilation-0" (TID:0x14de6e8, 
> sys_thread_t:0x4a49140,
> > state:CW
> > , native ID:0x4e4) prio=1
> >         at 
> SymantecJITCompilationThread.run(JITcompilationthread.java,
> > Compiled
> > Code)
> >     "SymcJIT-LazyCompilation-PA" (TID:0x14de6a8, 
> sys_thread_t:0x4a48008,
> > state:C
> > W, native ID:0x3a8) prio=10
> >         at java.lang.Object.wait(Object.java:424)
> >         at 
> SymantecJITCompilationThread.run(JITcompilationthread.java,
> > Compiled
> > Code)
> >     "Finalizer" (TID:0x14d9320, sys_thread_t:0x498e1c8, 
> state:CW, native
> > ID:0x39
> > 0) prio=8
> >         at 
> java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:112)
> >         at 
> java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127)
> >         at 
> java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:174)
> >     "Reference Handler" (TID:0x14d93b0, 
> sys_thread_t:0x498a2e0, state:CW,
> > native
> >  ID:0x44c) prio=10
> >         at java.lang.Object.wait(Object.java:424)
> >         at 
> java.lang.ref.Reference$ReferenceHandler.run(Reference.java:114)
> >     "Signal dispatcher" (TID:0x14d93e0, 
> sys_thread_t:0x49891f8, state:R,
> > native
> > ID:0x764) prio=5
> >     "main" (TID:0x14d91e0, sys_thread_t:0x2f8198, state:CW, 
> native ID:0x464)
> > pri
> > o=5
> >         at java.lang.Object.wait(Object.java:424)
> >         at
> > 
> org.w3c.www.protocol.http.HttpManager.waitForConnection(HttpManager.j
> > ava:597)
> >         at
> > 
> org.w3c.www.protocol.http.HttpBasicServer.getConnection(HttpBasicServ
> > er.java, Compiled Code)
> >         at
> > 
> org.w3c.www.protocol.http.HttpBasicServer.runRequest(HttpBasicServer.
> > java, Compiled Code)
> >         at
> > 
> org.w3c.www.protocol.http.HttpManager.runRequest(HttpManager.java, Co
> > mpiled Code)
> >         at testProblem.main(testProblem.java, Compiled Code)
> > Monitor Cache Dump:
> >     SymantecJITCompilationThread@14DE6E8/1536418: <unowned>
> >         Waiting to be notified:
> >             "SymcJIT-LazyCompilation-PA" (0x4a48008)
> >     java.lang.ref.ReferenceQueue$Lock@14D9338/150ED78: <unowned>
> >         Waiting to be notified:
> >             "Finalizer" (0x498e1c8)
> >     org.w3c.www.protocol.http.HttpManager@150B4C8/1642AB0: <unowned>
> >         Waiting to be notified:
> >             "main" (0x2f8198)
> >     java.lang.ref.Reference$Lock@14D93C0/150E8A8: <unowned>
> >         Waiting to be notified:
> >             "Reference Handler" (0x498a2e0)
> > Registered Monitor Dump:
> >     SymcJIT Method Monitor: <unowned>
> >     SymcJIT Lazy Queue Lock: <unowned>
> >         Waiting to be notified:
> >             "SymcJIT-LazyCompilation-0" (0x4a49140)
> >     SymcJIT Method Monitor: <unowned>
> >     SymcJIT Method List Monitor: <unowned>
> >     SymcJIT Lock: <unowned>
> >     utf8 hash table: <unowned>
> >     JNI pinning lock: <unowned>
> >     JNI global reference lock: <unowned>
> >     BinClass lock: <unowned>
> >     Class linking lock: <unowned>
> >     System class loader lock: <unowned>
> >     Code rewrite lock: <unowned>
> >     Heap lock: <unowned>
> >     Monitor cache lock: owner "Signal dispatcher" 
> (0x49891f8) 1 entry
> >     Thread queue lock: owner "Signal dispatcher" (0x49891f8) 1 entry
> >     Monitor registry: owner "Signal dispatcher" (0x49891f8) 1 entry
> >
> >
> > > -----Original Message-----
> > > From: Yves Lafon [mailto:ylafon@w3.org]
> > > Sent: 16 August 2001 16:48
> > > To: Harmeet
> > > Cc: Owen Roberts; www-jigsaw@w3.org
> > > Subject: Re: HttpManager hangs.
> > >
> > >
> > > On Thu, 16 Aug 2001, Harmeet wrote:
> > >
> > > > I did the test with timing for
> > > > http://www.yahoo.com/
> > > > http://www.kodemuse.com/index.html   (this is my LAN 
> Connected Site)
> > > > http://www.google.com/
> > > >
> > > > http://www.yahoo.com/
> > > > tried 30 iterations, total time=190 ms, did not hang
> > > >
> > > > http://www.kodemuse.com/index.html
> > > > tried 30 iterations, total time=21 ms, did not hang
> > > >
> > > > http://www.google.com/
> > > > tried 30 iterations, stopped after 5. :-(
> > > >
> > > > Tried again
> > > > http://www.google.com/
> > > > tried 30 iterations, stopped after 6. :-(
> > >
> > > Would it be possible th have a thread dump when that happens?
> > >
> > > > I am running on Windows 2000 and JDK 1.3.
> > > >
> > > > I have had one similar experience with Jigsaw:
> > > > In my past life, Jigsaw used to  hang when serving static
> > > files in a stress
> > > > test/production environment. The workaround was use
> > > Servlets instead of the
> > > > default Resource Handlers. It worked well.
> > >
> > > Same here, If it is due to a locking problem, having a 
> stack trace may
> > > help chasing it. Note that it never happened here while 
> doing stress
> > > tests.
> > >
> > > > Not sure what the right solution for HttpManager is. Maybe
> > > you could switch
> > > > of some code there that you don't find useful/easy to
> > > follow and try.
> > > >
> > > > Harmeet
> > > > ----- Original Message -----
> > > > From: "Owen Roberts" <oroberts@baltimore.com>
> > > > To: "Harmeet" <harmeet@kodemuse.com>
> > > > Sent: Thursday, August 16, 2001 3:01 AM
> > > > Subject: RE: HttpManager hangs.
> > > >
> > > >
> > > > > Hi Harmeet,
> > > > >
> > > > > Thanks very much for replying! Was the problem with
> > > Google the same as I
> > > > > experienced?
> > > > >
> > > > > I changed the code as you suggested.
> > > > > With http://www.yahoo.com/ it's fine - and does the 
> 30 iterations.
> > > > > With http://www.google.com/, however it stops after 5.
> > > > > Also, with localhost, using a jigsaw server, it also
> > > stops after 5.
> > > > > And, with an internal lan web server running IIS, it
> > > stops after 5.
> > > > >
> > > > > This implies to me that when this operation is done in a
> > > fast loop, it
> > > > > hangs. Yahoo is a slower web page than the other three
> > > examples. I am
> > > > pretty
> > > > > sure this is a bug as it occurs with multiple server
> > > types and locations
> > > > > that are fast.
> > > > >
> > > > > Can you please try the operation with a local server? If
> > > you place these 2
> > > > > files in the Jigsaw directory on a Win32 machine, all you
> > > have to do is
> > > > hit
> > > > > the batch file... although it feels like you are running
> > > Linux? :-)
> > > > >
> > > > > Thanks very much,
> > > > > OWen
> > > > >
> > > > >
> > > > > > -----Original Message-----
> > > > > > From: Harmeet [mailto:harmeet@kodemuse.com]
> > > > > > Sent: 16 August 2001 7:36
> > > > > > To: Owen Roberts
> > > > > > Subject: Re: HttpManager hangs.
> > > > > >
> > > > > >
> > > > > > I ran a slightly diffierent test, and it worked.
> > > > > > I used this jpython code to run the test. Thought it
> > > was simpler and
> > > > > > functionally equivalent
> > > > > >
> > > > > > def jighttptest():
> > > > > >     from org.w3c.www.protocol.http import HttpManager
> > > > > >     from java.net import URL
> > > > > >     mgr = HttpManager.getManager()
> > > > > >     u = URL('http://www.yahoo.com/')
> > > > > >     for i in range(0,30):
> > > > > >         req = mgr.createRequest() ;
> > > > > >         req.setMethod('GET')
> > > > > >         req.setURL(u)
> > > > > >         reply = mgr.runRequest(req);
> > > > > >         print i,'done'
> > > > > >
> > > > > > This test worked fine. I had a problem with google, but I
> > > > > > doubt that has
> > > > > > anything to do with Jigsaw.
> > > > > >
> > > > > > Harmeet
> > > > > > ----- Original Message -----
> > > > > > From: "Owen Roberts" <oroberts@baltimore.com>
> > > > > > To: <www-jigsaw@w3.org>
> > > > > > Sent: Wednesday, August 15, 2001 5:41 AM
> > > > > > Subject: HttpManager hangs.
> > > > > >
> > > > > >
> > > > > > > Hi all,
> > > > > > >
> > > > > > > I am having real difficulty working out why HttpManager
> > > > > > from Jigsaw 2.2.0
> > > > > > is
> > > > > > > hanging on me. Can I ask a huge favour of the list - this
> > > > > > should only take
> > > > > > > two minutes.
> > > > > > > Could someone else that is using Jigsaw 2.2.0 please
> > > > > > confirm that they can
> > > > > > > reproduce this problem?
> > > > > > > Below are two files - i didn't attach them as Im not sure
> > > > > > of attachment
> > > > > > > etiquette.
> > > > > > > The first will build the second under Win32 if 
> you recreate
> > > > > > these files
> > > > > > > under the root of your Jigsaw installation directory.
> > > > > > >
> > > > > > > The output should be 30 iterations of the loop, GETting a
> > > > > > known fast web
> > > > > > > page.
> > > > > > > HOwever, only a few iterations are printed out before the
> > > > > > program hangs
> > > > > > > inside manager.runRequest();
> > > > > > >
> > > > > > > I would be _very_ appreciative of anyone who can confirm
> > > > > > this is a bug so
> > > > > > I
> > > > > > > can raise it with the Jigsaw team.
> > > > > > >
> > > > > > > Thanks _very_ much for your time,
> > > > > > > Owen Roberts.
> > > > > > >
> > > > > > >
> > > > > > > -------------------testProblem.bat----------------
> > > > > > > set CLASSPATH=classes\jigsaw.jar;.;
> > > > > > > javac -classpath %CLASSPATH% testProblem.java
> > > > > > > java -classpath %CLASSPATH% testProblem
> > > > > > > ----------------------end testProblem.bat--------------
> > > > > > >
> > > > > > > -----------------start testProblem.java-------
> > > > > > > import java.lang.String;
> > > > > > > import java.net.*;
> > > > > > > import java.io.*;
> > > > > > > import java.util.*;
> > > > > > > import org.w3c.www.protocol.http.HttpManager;
> > > > > > > import org.w3c.www.protocol.http.HttpException;
> > > > > > > import org.w3c.www.protocol.http.Reply;
> > > > > > > import org.w3c.www.protocol.http.Request;
> > > > > > > import org.w3c.www.http.HTTP;
> > > > > > > import org.w3c.www.mime.MimeType;
> > > > > > >
> > > > > > >
> > > > > > > public final class testProblem
> > > > > > > {
> > > > > > >     public static void main (String[] args)
> > > > > > >     {
> > > > > > >         HttpManager     manager = 
> HttpManager.getManager() ;
> > > > > > >         for (int i=0; i<30; i++)
> > > > > > >         {
> > > > > > >             try
> > > > > > >             {
> > > > > > >                 Request request = 
> manager.createRequest() ;
> > > > > > >                 request.setMethod("GET") ;
> > > > > > >                 request.setURL(new
> > > URL("http://www.google.com/"));
> > > > > > >                 System.out.println("start a get...");
> > > > > > >                 Reply    reply = 
> manager.runRequest(request) ;
> > > > > > >                 System.out.println("complete a get...");
> > > > > > >             }
> > > > > > >             catch(MalformedURLException e)
> > > > > > >             {
> > > > > > >                 System.out.println("caught: " + 
> e.toString());
> > > > > > >             }
> > > > > > >             catch(HttpException e)
> > > > > > >             {
> > > > > > >                 System.out.println("caught: " + 
> e.toString());
> > > > > > >             }
> > > > > > >             catch(IOException e)
> > > > > > >             {
> > > > > > >                 System.out.println("caught: " + 
> e.toString());
> > > > > > >             }
> > > > > > >         }
> > > > > > >     }
> > > > > > > }
> > > > > > > ----------------------------end
> > > testProblem.java-----------------
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > 
> --------------------------------------------------------------
> > > > > > ------------
> > > > > > ---
> > > > > > > Baltimore Technologies plc will not be liable for
> > > direct,  special,
> > > > > > indirect
> > > > > > > or consequential  damages  arising  from  alteration of
> > > > > > the contents of
> > > > > > this
> > > > > > > message by a third party or as a result of any virus being
> > > > > > passed on.
> > > > > > >
> > > > > > > In addition, certain Marketing collateral may be 
> added from
> > > > > > time to time
> > > > > > to
> > > > > > > promote Baltimore Technologies products, services, Global
> > > > > > e-Security or
> > > > > > > appearance at trade shows and conferences.
> > > > > > >
> > > > > > > This footnote confirms that this email message has
> > > been swept by
> > > > > > > Baltimore MIMEsweeper for Content Security 
> threats, including
> > > > > > > computer viruses.
> > > > > > >    http://www.baltimore.com
> > > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > This footnote confirms that this email message has 
> been swept by
> > > > > > MIMEsweeper for the presence of computer viruses.
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > > --
> > > Yves Lafon - W3C
> > > "Baroula que barouleras, au tiéu toujou t'entourneras."
> > >
> >
> 
> -- 
> Yves Lafon - W3C
> "Baroula que barouleras, au tiéu toujou t'entourneras."
> 

Received on Thursday, 16 August 2001 12:29:01 UTC