1

シナリオは次のとおりです。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 呼び出しの前に新しい接続が作成されます。

この問題は、同じクライアントでこのスクリプトを 2 つ実行すると発生します。これは、1 つのスクリプトの呼び出し rpc.methodM(parameters) が、同じクライアント内の別のスクリプトの rpc.methodN(parameters) と同時に実行されることを意味します。これによりサーバーでクラッシュが発生し、XMLRPC-SERVER はプロセスを再起動するまで停止したままになります。

Abyss のヘルプを読みましたが、runOnce() メソッドは役に立ちません。デフォルトでは、上記のようにコンストラクターを呼び出すと、デフォルトの MaxConnections は 30 で、Abyss サーバーのタイムアウトは 15 セグメントです。

このクラッシュを回避するための構成はありますか? 同時に複数のクライアントをサポートし、多数の接続を同時にサポートする必要があります。

これに関連するヘルプをありがとう、

よろしくお願いします、ルチュクス。

4

1 に答える 1