下一个场景是:我有一个 XMLRPC-C++ 应用程序,监听 PORT=8081 上的连接。它实现了一个深渊服务器,使用 xmlrpc-c 库如下:
xmlrpc_c::serverAbyss myAbyssServer(
myRegistry, //handler of methods
port, //8081
"xmlrpc_log"
);
当我从调用许多 XMLRPC 方法的脚本创建多个连接时,它工作正常。脚本是这样的: Script1: rpc.method1(parameters); 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 保持关闭状态,直到重新启动该过程。
我阅读了深渊帮助,并且 runOnce() 方法无济于事。默认情况下,调用上面的构造函数,对于Abyss服务器,MaxConnections默认为30,超时15 segs。
是否有一些配置可以避免这种崩溃?我需要同时支持多个客户端并同时支持多个连接。
感谢您提供与此相关的任何帮助,
真诚的,卢丘斯。