下一个场景是:我有一个XMLRPC++应用程序,侦听PORT=8081上的连接。它使用xmlrpc-c库实现一个Abyss服务器,如下所示:
xmlrpc_c::serverAbyss myAbyssServer(
myRegistry, //handler of methods
port, //8081
"xmlrpc_log"
);当我从一个调用许多XMLRPC方法的脚本创建多个连接时,它可以正常工作。脚本是这样的: Script1: rpc.method1(参数);rpc.method2(参数);rpc.methodN(参数);
如果我在执行此脚本时使用netstat和xmlrpc_log检查服务器中的连接,则输出类似于xmlrpc_log:8081 xmlrpc_log: TIME_WAIT。尽管XMLRPC_CLIENT IP是相同的,但在rpc.method调用之前,它会创建一个新的连接。
当我在同一个客户端中执行两个脚本时,就会出现这个问题。这意味着,一个脚本中的调用rpc.methodM(参数)与另一个脚本中的rpc.methodN(参数)在同一个客户机中同时执行。这会在服务器中产生崩溃,而XMLRPC-服务器在重新启动进程之前一直保持不动。
我阅读了Abyss,runOnce()方法也没有帮助。默认情况下,调用上述构造函数时,Abyss服务器的MaxConnections默认为30,超时值为15 segs。
有什么配置可以避免这种崩溃吗?我需要同时支持多个客户端,同时支持多个连接。
感谢与此相关的帮助,
真的,卢克斯。
发布于 2011-07-15 08:18:31
井。显然,服务器正在处理多个连接,并支持使用线程进行多线程处理。问题应该出现在由RPC调用执行的代码中,我猜是因为可重入/线程安全问题。
https://stackoverflow.com/questions/6649802
复制相似问题