From: Robert S. <rob...@ro...> - 2009-12-17 19:02:03
|
I've just spent the last few days tracking down a problem with one of our installations. The site is a very high load system with lots (>600) of very active connections. At times of high load a large number of the users were getting page refusals (connection resets). After lots of head scratching I finally found the culprit ! We were setting the socket listeners maxThreads value to 1000, but after running a load test in the office I found that I could only make 256 connections to the server. After this all further connection attempts were refused. I looked through the Jetty code and found the POOL_MAX variable in Pool.java, which defaults to 256. Setting this to a higher value (500) cured the problem. Looking further through the code, it appears that when you set maxThreads to a higher value this doesn't affect the _pondLife array which has already been initialised to the lower 256 limit. Now that I know about the problem I can work around it (initialse POOL_MAX to the same value as we use for maxThreads) but in the absence of a fix for Jetty 5 it might be helpful to add this to a FAQ somewhere. I've had a quick look at the Jetty 6 code base (that we use for the latest version of our software) and can't see anything similar in there. Regards, Rob Stone |
From: Robert S. <rob...@ro...> - 2009-12-17 20:35:29
|
Please ignore this, I've checked a bit further and it looks like the code was incorrectly calling start() on the listener before setting the maxThreads parameter. Regards Rob Stone On Thu, 2009-12-17 at 18:49 +0000, Robert Stone wrote: > I've just spent the last few days tracking down a problem with one of > our installations. The site is a very high load system with lots > (>600) > of very active connections. At times of high load a large number of > the > users were getting page refusals (connection resets). > > After lots of head scratching I finally found the culprit ! We were > setting the socket listeners maxThreads value to 1000, but after > running > a load test in the office I found that I could only make 256 > connections > to the server. After this all further connection attempts were > refused. > > I looked through the Jetty code and found the POOL_MAX variable in > Pool.java, which defaults to 256. Setting this to a higher value (500) > cured the problem. Looking further through the code, it appears that > when you set maxThreads to a higher value this doesn't affect the > _pondLife array which has already been initialised to the lower 256 > limit. Now that I know about the problem I can work around it > (initialse > POOL_MAX to the same value as we use for maxThreads) but in the > absence > of a fix for Jetty 5 it might be helpful to add this to a FAQ > somewhere. > I've had a quick look at the Jetty 6 code base (that we use for the > latest version of our software) and can't see anything similar in > there. > > Regards, > Rob Stone > > > ------------------------------------------------------------------------------ > This SF.Net email is sponsored by the Verizon Developer Community > Take advantage of Verizon's best-in-class app development support > A streamlined, 14 day to market process makes app distribution fast and easy > Join now and get one step closer to millions of Verizon customers > http://p.sf.net/sfu/verizon-dev2dev > _______________________________________________ Jetty-support mailing list Jet...@li... https://lists.sourceforge.net/lists/listinfo/jetty-support Robert Stone Systems Consultant Rostrvm Solutions Ltd www.rostrvm.com T: + 44 (0) 1483 744431 F: + 44 (0) 1483 744447 E: rob...@ro... The content of this e-mail (including any attachments) as received may not be the same as sent. If you consider that the content is material to the formation or performance of a contract or you are otherwise relying upon its accuracy, you should consider requesting a copy be sent by facsimile or normal mail. The information in this e-mail is confidential and may be legally privileged. If you are not the intended recipient, please notify the sender immediately and then delete this e-mail entirely - you must not retain, copy, distribute or use this e-mail for any purpose or disclose any of its content to others. Opinions, conclusions and other information in this e-mail that do not relate to the official business of Rostrvm Solutions Ltd shall be understood as neither given nor endorsed by it. Please note we intercept and monitor incoming / outgoing e-mail and therefore you should neither expect nor intend any e-mail to be private in nature. We have checked this e-mail for viruses and other harmful components and believe but not guarantee it virus-free prior to leaving our computer system. However, you should satisfy yourself that it is free from harmful components, as we do not accept responsibility for any loss or damage it may cause to your computer systems. Rostrvm Solutions Limited is a company incorporated in England and Wales (Company Number 04246427) and has its registered office at Prospect House, 2, Athenaeum Road, London, N20 9YU |