java - Apache CXF slow to respond -
we in trouble use of apache cxf.
we use 'apache cxf 2.2.5' , 'spring framework 3.2.10' soap service in our system.
this brief diagram of our system ( see below)
+--------+ +--------------+ +---------------------+ +---------------- | l4 |-- rb --| apache httpd |- mod_jk -| jboss |---| spring framework 3.2.10 | switch | | 2.2.27 (2ea) | | 7.1.1 (2ea x 4inst) | | apache cxf 2.2.5 / jdk 7 +--------+ +--------------+ +---------------------+ +----------------
apm system tells there response delay in our system because of 1 of apache cxf method servletdestination.invoke()
when soap messages incoming 100 tps.
it reports servletdestination.invoke()
spent on 70 seconds per 1 transaction.
our sib(service implementation bean) works fine (it spent below 1 seconds).
all of our systems os parameter settings good.
- open files max : 32767 - max processes : 300000
mod_jk settings below (per jboss instance)
- socket_keepalive=true - socket_timeout=300 - connection_pool_size=500 - connection_pool_minsize=300 - connection_pool_timeout=60
● source of servletdestination.invoke()
method, apache cxf 2.2.5
public void invoke(final servletconfig config, final servletcontext context, final httpservletrequest req, final httpservletresponse resp) throws ioexception { messageimpl inmessage = new messageimpl(); setupmessage(inmessage, config, context, req, resp); exchangeimpl exchange = new exchangeimpl(); exchange.setinmessage(inmessage); exchange.setsession(new httpsession(req)); inmessage.setdestination(this); incomingobserver.onmessage(inmessage); }
● source of abstracthttpdestination.setupmessage()
method called in servletdestination.invoke()
, apache cxf 2.2.5
protected void setupmessage(message inmessage, final servletconfig config, final servletcontext context, final httpservletrequest req, final httpservletresponse resp) throws ioexception { inmessage.setcontent(inputstream.class, req.getinputstream()); inmessage.put(http_request, req); inmessage.put(http_response, resp); inmessage.put(http_context, context); inmessage.put(http_config, config); inmessage.put(message.http_request_method, req.getmethod()); inmessage.put(message.request_uri, req.getrequesturi()); string contextpath = req.getcontextpath(); if (contextpath == null) { contextpath = ""; } inmessage.put(message.path_info, contextpath + req.getpathinfo()); .... .... }
what problem of our system , how can resolve problem ?
there reported bugs on cxf's servletdestination ?
you can add comment if need additional information.
best regards.
Comments
Post a Comment