Сценарий следующий:
У меня есть приложение XMLRPC-C ++, прослушивающее соединения по PORT = 8081. Он реализует Abyss Server, используя библиотеку 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. Хотя IP-адрес XMLRPC_CLIENT такой же, перед вызовом rpc.method он создает новые соединения.
Проблема возникает, когда я выполняю два из этих сценариев в одном и том же клиенте. Это означает, что вызов rpc.methodM (параметры) в одном скрипте выполняется одновременно с rpc.methodN (параметры) в другом скрипте того же клиента.
Это приводит к сбою на сервере, и XMLRPC-SERVER остается выключенным до перезапуска процесса.
Я прочитал справку Abyss, и метод runOnce () не поможет. По умолчанию, вызывая конструктор, как указано выше, MaxConnections по умолчанию равен 30, а время ожидания составляет 15 сегментов для сервера Abyss.
Есть ли какие-либо настройки, чтобы избежать этого сбоя? Мне нужно будет поддерживать более одного клиента одновременно и много соединений одновременно.
Спасибо за любую помощь, связанную с этим,
С уважением,
Luchux.