2016-07-12 4 views
0

로드 밸런서가있는 GCE 인스턴스의 임베디드 Jetty 서버를 사용하여 저지 앱을 실행하고 있습니다. TCP로드 밸런서를 사용하여 설정을로드 테스트했는데 20ms 미만의 대기 시간으로 약 2400 개의 QPS를 얻을 수 있습니다. 하지만 동일한 설정은 HTTP로드 밸런서를 사용합니다. 대기 시간이 20ms 미만인 경우에만 < 1000 QPS를 얻을 수 있습니다.차이점 btw Gcloud TCP와 HTTP로드 밸런서

디버깅 할 때 HTTP LB를 사용할 때 훨씬 더 많은 파일 설명자를 발견했습니다.

다음은 제 임베디드 부두의 구성입니다. 어떤 아이디어가 좋을 것입니다! :)

int httpPort = 8080; 
    int maxThreads = 1024; 
    int minThreads = 32; 
    int idleTimeout = 500; 
    QueuedThreadPool pool = new QueuedThreadPool(maxThreads, minThreads, idleTimeout, new java.util.concurrent.ArrayBlockingQueue(6000)); 

    Server server = new Server(pool); 
    ServerConnector httpConnector = new ServerConnector(server); 
    httpConnector.setPort(httpPort); 
    server.addConnector(httpConnector); 

    ServletContextHandler context = new ServletContextHandler(ServletContextHandler.NO_SESSIONS); 
    context.setContextPath("/"); 
    server.setHandler(context); 
+0

비 HTTP로드 밸런서에 대해 자세히 알려주십시오. LVS인가? 그렇다면 대답은 간단 할 수 있습니다 - LVS는 HTTP LB보다 성능이 좋습니다. – user1641854

답변

0

이이 문제를 해결 밝혀 :

httpConnector.setIdleTimeout(100L); 

내가 왜 아직 문제가 아니다 gcloud의 TCP 부하 분산 장치와 잘 모르겠습니다 만.