You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xmlrpc-dev@ws.apache.org by Ram-A Kumar <ra...@db.com> on 2010/04/05 16:24:11 UTC

CLOSE_WAITs in XMLRPC ?

Hi,

When we run xmlrpc, we can see a steady increase in the number of 
CLOSE_WAIT sockets over time. These
sockets are not closed automatically. Our client and server runs on the 
same unix box.
We use the xmlrpc in the following way.

import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcCommonsTransportFactory;
import java.net.URL;

public class XmlRpc {

private XmlRpcClient client=null;

private XmlRpc() {
try {

XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl(); 
String PORT= System.getenv("MYSYS_PORT"); 
if (PORT==null)
{
PORT="8000"; 
} 
StringBuffer ServerURL= new StringBuffer();
ServerURL.append("http://127.0.0.1:").append(PORT).append("/xmlrpc"); 
config.setServerURL(new URL(ServerURL.toString()));
config.setEnabledForExtensions(true);
config.setConnectionTimeout(20 * 1000);
config.setReplyTimeout(20 * 1000);

this.client = new XmlRpcClient();
// use Commons HttpClient as transport
client.setTransportFactory(new XmlRpcCommonsTransportFactory(client));
// set configuration
client.setConfig(config);
} catch (Exception e) {
Util.logger.error("xmlrpc",e);
}
}

public static XmlRpc XMLRPC=new XmlRpc();

public Object call(String m,String f,Object[] a) throws Exception {
return Util.get_result(client.execute(m+"."+f, a));
}

}


The 'call' function gets called through XMLRPC object in the following 
fashion in a different file
public static void main(String[] args) throws Exception {
String x=(String)XmlRpc.XMLRPC.call("XYZ","echo",new Object[]{"test"});
System.out.println("x="+x);
}




A snippet of the 'netstat' is (the port numbers are not mentioned)

tcp 0 0 localhost: localhost: CLOSE_WAIT
tcp 1 0 localhost: localhost: CLOSE_WAIT
tcp 1 0 localhost: localhost: CLOSE_WAIT
tcp 1 0 localhost: localhost: CLOSE_WAIT
tcp 1 0 localhost: localhost: CLOSE_WAIT
tcp 1 0 localhost: localhost: CLOSE_WAIT
tcp 1 0 localhost: localhost: CLOSE_WAIT
tcp 1 0 localhost: localhost: CLOSE_WAIT
tcp 1 0 localhost: localhost: CLOSE_WAIT
tcp 1 0 localhost: localhost: CLOSE_WAIT
tcp 1 0 localhost: localhost: CLOSE_WAIT
tcp 1 0 localhost: localhost: CLOSE_WAIT
tcp 1 0 localhost: localhost: CLOSE_WAIT
tcp 1 0 localhost: localhost: CLOSE_WAIT
tcp 1 0 localhost: localhost: CLOSE_WAIT
tcp 1 0 localhost: localhost: CLOSE_WAIT




The situation does not improve even if we create a new client for each 
connection as follows:

public Object call(String m,String f,Object[] a) throws Exception
{
XmlRpcClient client = new XmlRpcClient();
// use Commons HttpClient as transport
client.setTransportFactory(new XmlRpcCommonsTransportFactory(client));
// set configuration
client.setConfig(config);
return Util.get_result(client.execute(m+"."+f, a));
}


Our questions are:   Should we also be creating the ?config? instance 
within the ?call? method ?
Are there any known problems using this library and this specific 
mechanism to communicate to non XML rpc servers (ours is in Erlang).  And 
do we need to do something special (since both client and server are 
running on a local host).

Kind regards,
Ram-A Kumar



---
This communication may contain confidential and/or privileged information.
If you are not the intended recipient (or have received this communication
in error) please notify the sender immediately and destroy this
communication. Any unauthorized copying, disclosure or distribution of the
material in this communication is strictly forbidden.

Deutsche Bank does not render legal or tax advice, and the information
contained in this communication should not be regarded as such.

Re: CLOSE_WAITs in XMLRPC ?

Posted by imcgraw <mc...@gmail.com>.
Any luck with this?  I'm having similar problems.


Ram-A Kumar wrote:
> 
> Hi,
> 
> When we run xmlrpc, we can see a steady increase in the number of 
> CLOSE_WAIT sockets over time. These
> sockets are not closed automatically. Our client and server runs on the 
> same unix box.
> We use the xmlrpc in the following way.
> 
> import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
> import org.apache.xmlrpc.client.XmlRpcClient;
> import org.apache.xmlrpc.client.XmlRpcCommonsTransportFactory;
> import java.net.URL;
> 
> public class XmlRpc {
> 
> private XmlRpcClient client=null;
> 
> private XmlRpc() {
> try {
> 
> XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl(); 
> String PORT= System.getenv("MYSYS_PORT"); 
> if (PORT==null)
> {
> PORT="8000"; 
> } 
> StringBuffer ServerURL= new StringBuffer();
> ServerURL.append("http://127.0.0.1:").append(PORT).append("/xmlrpc"); 
> config.setServerURL(new URL(ServerURL.toString()));
> config.setEnabledForExtensions(true);
> config.setConnectionTimeout(20 * 1000);
> config.setReplyTimeout(20 * 1000);
> 
> this.client = new XmlRpcClient();
> // use Commons HttpClient as transport
> client.setTransportFactory(new XmlRpcCommonsTransportFactory(client));
> // set configuration
> client.setConfig(config);
> } catch (Exception e) {
> Util.logger.error("xmlrpc",e);
> }
> }
> 
> public static XmlRpc XMLRPC=new XmlRpc();
> 
> public Object call(String m,String f,Object[] a) throws Exception {
> return Util.get_result(client.execute(m+"."+f, a));
> }
> 
> }
> 
> 
> The 'call' function gets called through XMLRPC object in the following 
> fashion in a different file
> public static void main(String[] args) throws Exception {
> String x=(String)XmlRpc.XMLRPC.call("XYZ","echo",new Object[]{"test"});
> System.out.println("x="+x);
> }
> 
> 
> 
> 
> A snippet of the 'netstat' is (the port numbers are not mentioned)
> 
> tcp 0 0 localhost: localhost: CLOSE_WAIT
> tcp 1 0 localhost: localhost: CLOSE_WAIT
> tcp 1 0 localhost: localhost: CLOSE_WAIT
> tcp 1 0 localhost: localhost: CLOSE_WAIT
> tcp 1 0 localhost: localhost: CLOSE_WAIT
> tcp 1 0 localhost: localhost: CLOSE_WAIT
> tcp 1 0 localhost: localhost: CLOSE_WAIT
> tcp 1 0 localhost: localhost: CLOSE_WAIT
> tcp 1 0 localhost: localhost: CLOSE_WAIT
> tcp 1 0 localhost: localhost: CLOSE_WAIT
> tcp 1 0 localhost: localhost: CLOSE_WAIT
> tcp 1 0 localhost: localhost: CLOSE_WAIT
> tcp 1 0 localhost: localhost: CLOSE_WAIT
> tcp 1 0 localhost: localhost: CLOSE_WAIT
> tcp 1 0 localhost: localhost: CLOSE_WAIT
> tcp 1 0 localhost: localhost: CLOSE_WAIT
> 
> 
> 
> 
> The situation does not improve even if we create a new client for each 
> connection as follows:
> 
> public Object call(String m,String f,Object[] a) throws Exception
> {
> XmlRpcClient client = new XmlRpcClient();
> // use Commons HttpClient as transport
> client.setTransportFactory(new XmlRpcCommonsTransportFactory(client));
> // set configuration
> client.setConfig(config);
> return Util.get_result(client.execute(m+"."+f, a));
> }
> 
> 
> Our questions are:   Should we also be creating the ?config? instance 
> within the ?call? method ?
> Are there any known problems using this library and this specific 
> mechanism to communicate to non XML rpc servers (ours is in Erlang).  And 
> do we need to do something special (since both client and server are 
> running on a local host).
> 
> Kind regards,
> Ram-A Kumar
> 
> 
> 
> ---
> This communication may contain confidential and/or privileged information.
> If you are not the intended recipient (or have received this communication
> in error) please notify the sender immediately and destroy this
> communication. Any unauthorized copying, disclosure or distribution of the
> material in this communication is strictly forbidden.
> 
> Deutsche Bank does not render legal or tax advice, and the information
> contained in this communication should not be regarded as such.
> 

-- 
View this message in context: http://old.nabble.com/CLOSE_WAITs-in-XMLRPC---tp28140508p28793592.html
Sent from the Apache Xml-RPC - Dev mailing list archive at Nabble.com.