java - httpclient timeout for many requests -


to simulate webapplication many users, have used loop, know still different single thread , that. code below

public closeablehttpclient gethttpclient() {         try{             sslcontext context = null;             trustmanager[] trustallcerts = new trustmanager[] { new x509trustmanager() {                 public java.security.cert.x509certificate[] getacceptedissuers() {                     return null;                 }                  public void checkclienttrusted(java.security.cert.x509certificate[] certs, string authtype) {                 }                  public void checkservertrusted(java.security.cert.x509certificate[] certs, string authtype) {                 }             } };              try {                 context = sslcontext.getinstance("ssl");             } catch (nosuchalgorithmexception e1) {                 e1.printstacktrace();             }             try {                 context.init(null, trustallcerts, new java.security.securerandom());             } catch (keymanagementexception e1) {                 e1.printstacktrace();             }              sslconnectionsocketfactory sslconnectionfactory = new sslconnectionsocketfactory(context, sslconnectionsocketfactory.allow_all_hostname_verifier);             registry<connectionsocketfactory> socketfactoryregistry = registrybuilder.<connectionsocketfactory> create()                       .register("https", sslconnectionfactory)                       .register("http", new plainconnectionsocketfactory()).build();              poolinghttpclientconnectionmanager cm = new poolinghttpclientconnectionmanager(socketfactoryregistry);              // increase max total connection 200              cm.setmaxtotal(20);              // increase default max connection per route 20              cm.setdefaultmaxperroute(10);              requestconfig defaultrequestconfig = requestconfig.custom()                         .setsockettimeout(5000)                         .setconnecttimeout(5000)                         .setconnectionrequesttimeout(5000)                         .build();              closeablehttpclient httpclient = httpclients.custom().setconnectionmanager(cm).setconnectionmanagershared(true)                      .setdefaultrequestconfig(defaultrequestconfig).build();             return httpclient;         }catch(exception ce){          }         return null;     } 

then in loop using below

try{ for(int i=0;i<500;i++){                 client = gethttpclient(); request = new httppost("some https url");               httpresponse response = client.execute(request);               int statuscode = response.getstatusline().getstatuscode();  if (statuscode == 200 ){                     entity = response.getentity();                     string content = entityutils.tostring(entity); }                 else{                     entity = response.getentity();                     string content = entityutils.tostring(entity); }} catch(exception ce){} finally{                   try {                         entityutils.consume(entity);                         request.releaseconnection();                         client.close();                         } catch (ioexception e) {                     }               } 

i response few request whereas fail few read timeout, if increase max connection few failures if keep max conn 200 in connection manager still few failure not many config, missing. exception below

java.net.sockettimeoutexception: read timed out @ java.net.socketinputstream.socketread0(native method) @ java.net.socketinputstream.read(socketinputstream.java:152) @ java.net.socketinputstream.read(socketinputstream.java:122) @ sun.security.ssl.inputrecord.readfully(inputrecord.java:442) @ sun.security.ssl.inputrecord.read(inputrecord.java:480) @ sun.security.ssl.sslsocketimpl.readrecord(sslsocketimpl.java:946) @ sun.security.ssl.sslsocketimpl.readdatarecord(sslsocketimpl.java:903) @ sun.security.ssl.appinputstream.read(appinputstream.java:102) @ org.apache.http.impl.io.sessioninputbufferimpl.streamread(sessioninputbufferimpl.java:139) @ org.apache.http.impl.io.sessioninputbufferimpl.fillbuffer(sessioninputbufferimpl.java:155) @ org.apache.http.impl.io.sessioninputbufferimpl.readline(sessioninputbufferimpl.java:284) @ org.apache.http.impl.conn.defaulthttpresponseparser.parsehead(defaulthttpresponseparser.java:140) @ org.apache.http.impl.conn.defaulthttpresponseparser.parsehead(defaulthttpresponseparser.java:57) @ org.apache.http.impl.io.abstractmessageparser.parse(abstractmessageparser.java:261) @ org.apache.http.impl.defaultbhttpclientconnection.receiveresponseheader(defaultbhttpclientconnection.java:165) @ org.apache.http.impl.conn.cpoolproxy.receiveresponseheader(cpoolproxy.java:167) @ org.apache.http.protocol.httprequestexecutor.doreceiveresponse(httprequestexecutor.java:272) @ org.apache.http.protocol.httprequestexecutor.execute(httprequestexecutor.java:124) @ org.apache.http.impl.execchain.mainclientexec.execute(mainclientexec.java:271) @ org.apache.http.impl.execchain.protocolexec.execute(protocolexec.java:184) @ org.apache.http.impl.execchain.retryexec.execute(retryexec.java:88) @ org.apache.http.impl.execchain.redirectexec.execute(redirectexec.java:110) @ org.apache.http.impl.client.internalhttpclient.doexecute(internalhttpclient.java:184) @ org.apache.http.impl.client.closeablehttpclient.execute(closeablehttpclient.java:82) @ org.apache.http.impl.client.closeablehttpclient.execute(closeablehttpclient.java:107) @ com.ibm.indo.serviceimpl.genericserviceimpl.checkdomregnew(genericserviceimpl.java:233) @ com.ibm.indo.controller.reportscontroller.checkdomregnew(reportscontroller.java:45) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:606) @ org.springframework.web.method.support.invocablehandlermethod.doinvoke(invocablehandlermethod.java:221) @ org.springframework.web.method.support.invocablehandlermethod.invokeforrequest(invocablehandlermethod.java:137) @ org.springframework.web.servlet.mvc.method.annotation.servletinvocablehandlermethod.invokeandhandle(servletinvocablehandlermethod.java:110) @ org.springframework.web.servlet.mvc.method.annotation.requestmappinghandleradapter.invokehandlemethod(requestmappinghandleradapter.java:776) @ org.springframework.web.servlet.mvc.method.annotation.requestmappinghandleradapter.handleinternal(requestmappinghandleradapter.java:705) @ org.springframework.web.servlet.mvc.method.abstracthandlermethodadapter.handle(abstracthandlermethodadapter.java:85) @ org.springframework.web.servlet.dispatcherservlet.dodispatch(dispatcherservlet.java:959) @ org.springframework.web.servlet.dispatcherservlet.doservice(dispatcherservlet.java:893) @ org.springframework.web.servlet.frameworkservlet.processrequest(frameworkservlet.java:967) @ org.springframework.web.servlet.frameworkservlet.dopost(frameworkservlet.java:869) @ javax.servlet.http.httpservlet.service(httpservlet.java:754) @ org.springframework.web.servlet.frameworkservlet.service(frameworkservlet.java:843) @ javax.servlet.http.httpservlet.service(httpservlet.java:847) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:329) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:248) @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:275) @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:161) @ org.jboss.as.web.security.securitycontextassociationvalve.invoke(securitycontextassociationvalve.java:153) @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:155) @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:102) @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:109) @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:368) @ org.apache.coyote.http11.http11processor.process(http11processor.java:877) @ org.apache.coyote.http11.http11protocol$http11connectionhandler.process(http11protocol.java:671) @ org.apache.tomcat.util.net.jioendpoint$worker.run(jioendpoint.java:930) @ java.lang.thread.run(thread.java:745)

are https server able handle 200 connections smoothly?. feel, issue not httpsclient code. server may refuse accept few request because of load on it?.


Comments

Popular posts from this blog

sql - VB.NET Operand type clash: date is incompatible with int error -

SVG stroke-linecap doesn't work for circles in Firefox? -

python - TypeError: Scalar value for argument 'color' is not numeric in openCV -