2014-04-26 3 views
1

ZeroMQ ROUTER 소켓은 클라이언트 연결을 내부적으로 어떻게 유지합니까?ZMQ ROUTER 클라이언트 유지 보수

가이드는 각 클라이언트가 고유-ID를 가져옵니다 말한다, 그러나에 명확하지 않다 :

클라이언트 (각 시스템에 다른 클라이언트 또는 다른 연결된 각 응용 프로그램 ??)
  • 로 계산 무엇
    1. 클라이언트로부터받은 요청 수에 제한이 있습니까?

      #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으로 설정됩니다.

  • 답변

    0

    나는 벤치마킹을 해왔지만 여기서 주어진 것과 동일한 코드의 파이썬 버전을 사용했습니다. [https://gist.github.com/malexer/8664997]. 그리고 그 잘 작동, 나는 심지어 100000 요청과 그 벌금으로 테스트. 당신이 그것을 줄 수 있겠습니까. 질문에 대한 답을 찾으면 알려줄 수 있습니다.

    첫 번째 질문에 대한 답변은 연결된 각 앱이 하나의 클라이언트로 간주되어 고유 한 ID를 보유한다는 것입니다. 저는 여러 클라이언트가 라우터 소켓에 연결하는 채팅 서버를 설계했습니다 - 각각 고유 ID가 있습니다.