Manutenção de clientes no ZMQ ROUTER

Como o soquete ZeroMQ ROUTER mantém suas conexões de clientes internamente.

O guia diz que cada cliente recebe um ID exclusivo, mas não está claro:

O que conta como cliente (cada máquina, um cliente diferente ou cada aplicativo conectado, diferente?)Existe um limite no número de solicitações recebidas de um cliente?

O motivo é que estou testando o estresse com este código (dehttp://hintjens.com/blog:42) com ab:

#include "czmq.h"

int main(void)
{
    zctx_t *ctx = zctx_new();
    void *router = zsocket_new(ctx, ZMQ_ROUTER);
    zsocket_set_router_raw(router, 1);
    zsocket_set_sndhwm(router, 0);
    zsocket_set_rcvhwm(router, 0);
    int rc = zsocket_bind(router, "tcp://*:8080");
    assert(rc != -1);

    while (true) 
    {
        //  Get HTTP request
        zframe_t *handle = zframe_recv(router);
        if (!handle) break;          //  Ctrl-C interrupt
        char *request = zstr_recv(router);
        puts(request);     //  Professional Logging(TM)
        free(request);     //  We throw this away

        //  Send Hello World response
        zframe_send(&handle, router, ZFRAME_MORE + ZFRAME_REUSE);
        zstr_send(router, "HTTP/1.0 200 OK\r\n""Content-Type: text/plain\r\n""\r\n""Hello, World!");

        //  Close connection to browser
        zframe_send(&handle, router, ZFRAME_MORE);
        zmq_send(router, NULL, 0, 0);
    }
    zctx_destroy(&ctx);
    return 0;
}

Quando dado o comandoab -n 1000 -c 10 http://192.168.74.1:8080/ Ocasionalmente, ele termina bem, mas muitas vezes fica travado por algum tempo e, em seguida, termina bem ou falha comapr_pollset_poll: The timeout specified has expired (70007) depois de algum número aleatório de mensagens (digamos, 300, 700 etc.)

A parte interessante é que, enquanto ab está suspenso (talvez aguardando resposta), se você abrir uma conexão diferente de uma máquina / navegador diferente, ela terá êxito. Como uma nova conexão de um navegador diferente é bem-sucedida, enquanto ab está por aí?

Então, imaginando se esse é um 'limite por conexão' do ROUTER ou algo mais acontecendo. Observe que o HWM é definido como 0.

questionAnswers(1)

yourAnswerToTheQuestion