ZeroMQ ROUTER 소켓은 클라이언트 연결을 내부적으로 어떻게 유지합니까?ZMQ ROUTER 클라이언트 유지 보수
가이드는 각 클라이언트가 고유-ID를 가져옵니다 말한다, 그러나에 명확하지 않다 :
클라이언트 (각 시스템에 다른 클라이언트 또는 다른 연결된 각 응용 프로그램 ??)- 클라이언트로부터받은 요청 수에 제한이 있습니까?
#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; }
명령을 부여 할 때
ab -n 1000 -c 10 http://192.168.74.1:8080/
은 때때로 잘 완료되지만 많은 시간이 단지 몇 시간 동안 중단과 :
이유는 내가 AB와 스트레스 (http://hintjens.com/blog:42에서)이 코드를 테스트를 생각한다 (예 : 300, 700 등)
재미있는 부분은 ab (응답 대기 중)에서 다른 연결을 여는 경우입니다. 다른 기계/브라우저, 괜찮아. ab가 방금 걸어 다니는 동안 다른 브라우저에서 새 연결이 어떻게 성공합니까?
그래서 이것이 ROUTER의 '연결 당 한도'인지 아니면 계속 진행 중인지 궁금합니다. 참고로, HWM은 0으로 설정됩니다.