【发布时间】:2011-10-02 17:59:58
【问题描述】:
场景是下一个: 我有一个 XMLRPC-C++ 应用程序,监听 PORT=8081 上的连接。它实现了一个深渊服务器,使用 xmlrpc-c 库作为下一个:
xmlrpc_c::serverAbyss myAbyssServer(
myRegistry, //handler of methods
port, //8081
"xmlrpc_log"
);
当我从调用许多 XMLRPC 方法的脚本创建多个连接时,它工作正常。 脚本是这样的: 脚本1: rpc.method1(参数); rpc.method2(参数); rpc.methodN(参数);
如果我在执行此脚本时使用 netstat 和 xmlrpc_log 检查服务器中的连接,则输出类似于 XMLRPC-SERVER:8081 XMLRPC-CLIENT:SOME TIME_WAIT。虽然 XMLRPC_CLIENT IP 是相同的,但在 rpc.method 调用之前它会创建一个新的连接。
当我在同一个客户端中执行两个这样的脚本时,就会出现问题。这意味着,一个脚本中的调用 rpc.methodM(parameters) 与另一个脚本中的 rpc.methodN(parameters) 在同一客户端中同时执行。 这会导致服务器崩溃,并且 XMLRPC-SERVER 保持关闭状态,直到重新启动进程。
我阅读了 Abyss 帮助,但 runOnce() 方法无济于事。默认情况下,调用如上构造函数,MaxConnections默认为30,超时15segs,对于Abyss服务器。
是否有一些配置可以避免这种崩溃?我需要同时支持多个客户端并同时支持多个连接。
感谢您提供与此相关的任何帮助,
真诚地, 卢楚克斯。
【问题讨论】:
标签: c++ web-services xml-rpc xmlrpclib simplexmlrpcserver