如何在 XMLRPC 中处理多个连接 Abyss Server - C++
场景是下一个: 我有一个 XMLRPC-C++ 应用程序,正在侦听 PORT=8081 上的连接。它实现了一个 Abyss 服务器,使用 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() 方法没有帮助。默认情况下,调用上面的构造函数,Abyss 服务器的 MaxConnections 默认为 30,超时为 15 segs。
是否有一些配置可以避免这种崩溃?我需要同时支持多个客户端和多个连接。
感谢您提供与此相关的任何帮助,
真诚地, 卢修斯。
The scenario is the next one:
I have a XMLRPC-C++ applcation, listening for connections on PORT=8081. It implements an Abyss Server, using the xmlrpc-c library as next:
xmlrpc_c::serverAbyss myAbyssServer(
myRegistry, //handler of methods
port, //8081
"xmlrpc_log"
);
when I create multiple connections from a script calling many XMLRPC methods, it works fine.
the script is something like this:
Script1:
rpc.method1(parameters);
rpc.method2(parameters);
rpc.methodN(parameters);
If I check connections in the server with netstat and the xmlrpc_log when this script is executing, the output is something like XMLRPC-SERVER:8081 XMLRPC-CLIENT:SOME TIME_WAIT. Though the XMLRPC_CLIENT IP is the same, fore very rpc.method call it creates a new connections.
The problem appears when I execute two of this scripts in the same client. It means, the call rpc.methodM(parameters) in one script, is executed simultaneously with the rpc.methodN(parameters) in the other script, in the same client.
This produces a crash in the server, and XMLRPC-SERVER stay down till a restart the process.
I read the Abyss help, and runOnce() method will not help. By default, calling the constructor as above, the MaxConnections by default is 30, and timeout 15 segs, for the Abyss server.
Is there some configuration to avoid this crash? I will need to support more than one client at the same time and many connections simultaneously.
Thanks for any help related to this,
Sincerely,
Luchux.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
出色地。显然,服务器正在处理多个连接并支持 pthreads 的多线程。问题应该出在我的 RPC 调用执行的代码中,我猜是因为可重入/线程安全问题。
Well. apparently the server is handling the multiple connections and supporting multithreading with pthreads. The problem should be in my code executed by the RPC calls, I guess because a reentrant/thread safety problem.