It's on my virtual 'to-do' list (along with many other things [Sigh]). Feel free to file a bug report and attach a patch against CVS HEAD, though.
Oleg On Thu, 2004-04-08 at 21:29, Sam Berlin wrote: > Regarding point 4, it might be worthwhile to use reflection on newer > JVMs so that the controller thread isn't necessary. An example of this > is: > > //a) Conceptually, this code does the following: > // SocketAddress addr=new InetSocketAddress(host, > port); > // Socket ret=new Socket(); > // ret.connect(addr, timeout); > // return ret; > // Unfortunately that causes compile errors on older > versions > // of Java. Worse, it may cause runtime errors if class > loading > // is not done lazily. (See chapter 12.3.4 of the Java > Language > // Specification.) So we use reflection. > Class _socketClass = Class.forName("java.net.Socket"); > Class _socketAddressClass = > Class.forName("java.net.SocketAddress"); > Class _connectMethod = _socketClass.getMethod("connect", > new Class[] { _socketAddressClass, Integer.TYPE }); > Class socketAddress = > Class.forName("java.net.InetSocketAddress"); > Class _inetAddressConstructor = > socketAddress.getConstructor(new Class[] { > String.class, Integer.TYPE > }); > try { > Socket ret = (Socket)_socketClass.newInstance(); > > Object addr = _inetAddressConstructor.newInstance( > new Object[] { host, new Integer(port) }); > > _connectMethod.invoke(ret, > new Object[] { addr, new Integer(timeout) }); > return ret; > } catch (InvocationTargetException e) { > Throwable e2 = e.getTargetException(); > throw (IOException)e2; > } catch(InstantiationException e) { > } catch(IllegalAccessException e) { > } > > Thanks, > Sam > > > On Thursday, April 8, 2004, at 03:22 PM, Oleg Kalnichevski wrote: > > > Gil, > > (1) First and foremost DO reuse HttpClient instances when using > > multi-threaded connection manager. HttpClient class is thread-safe. In > > fact there are no known problems with having just one instance of > > HttpClient per application. Using a new instance of HttpClient for > > processing each request totally defeats all the performance > > optimizations we have built into HttpClient > > > > (2) Use multi-threaded connection manager in case you do not > > > > (3) Disable stale connection check > > > > (4) Do not use connect timeout which causes a controller thread to be > > spawned per connection attempt > > > > Oleg > > > > On Thu, 2004-04-08 at 21:02, Alvarez, Gil wrote: > >> We recently ported our url-hitting code from using java.net.* code to > >> httpclient code. We use it in a high-volume environment (20 machines > >> are > >> hitting an external 3rd party to retrieve images). > >> > >> > >> > >> > >> > >> After the port, we saw a significant increase in cycles used by the > >> machines, about 2-3 times (ie, the load on the boxes increased from > >> using up 20% of the cpu, to about 50%-60% of the cpu. > >> > >> > >> > >> For each request, we instantiate an HttpClient object, and a GetMethod > >> object, and shut things down afterwards. > >> > >> > >> > >> In order to reduce the use of cycles, what is the recommended > >> approach? > >> > >> > >> > >> Thank you. > >> > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: > > [EMAIL PROTECTED] > > For additional commands, e-mail: > > [EMAIL PROTECTED] > > > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]