web服务-如何在XMLRPC中处理多个连接

web services - How to handle multiple connections Abyss Server in XMLRPC - C++

本文关键字:处理 连接 XMLRPC 服务 web      更新时间:2023-10-16

场景如下:我有一个xmlrpc - c++应用程序,监听PORT=8081上的连接。它实现了一个深渊服务器,使用xmlrpc-c库如下:

xmlrpc_c::serverAbyss myAbyssServer(
        myRegistry, //handler of methods
        port,       //8081        
        "xmlrpc_log"   
        );
当我从调用许多XMLRPC方法的脚本创建多个连接时,

可以正常工作。脚本是这样的:Script1:rpc.method1(参数);rpc.method2(参数);

rpc.methodN(参数);

如果我在执行此脚本时使用netstat和xmlrpc_log检查服务器中的连接,则输出类似XMLRPC-SERVER:8081 XMLRPC-CLIENT:SOME TIME_WAIT。虽然XMLRPC_CLIENT IP是相同的,但是非常rpc。方法调用它将创建一个新的连接。

当我在同一个客户端中执行两个脚本时,问题出现了。这意味着,在同一个客户端中,一个脚本中的rpc.methodM(参数)调用与另一个脚本中的rpc.methodN(参数)调用同时执行。这会导致服务器崩溃,并且XMLRPC-SERVER保持关闭状态,直到重新启动进程。

我读了Abyss帮助,runOnce()方法没有帮助。默认情况下,调用上面的构造函数,对于Abyss服务器,MaxConnections默认为30,timeout为15 segs。

是否有一些配置来避免这个崩溃?我需要同时支持多个客户端和多个连接。

谢谢你的帮助,

真诚,Luchux .

好吧。显然,服务器正在处理多个连接,并通过pthreads支持多线程。问题应该在我的代码中由RPC调用执行,我猜是因为可重入/线程安全问题。

    在与其他项目一起工作了一段时间后,我回到了这个代码,问题是在一个自然语言库中,有一些不可重入的方法。他们解决了,我解决了:)-