2016-07-12 7 views
0

Ich habe eine Jersey-App mit eingebetteten Jetty-Server, in GCE-Instanzen, von Load Balancer konfrontiert. Ich habe das Setup mit TCP Load Balancer getestet, ich kann 2400 QPS mit weniger als 20ms Latenz erreichen. Aber die gleiche Einrichtung mit HTTP-Load-Balancer bin ich nur in der Lage, um < 1000 QPS mit Latenz unter 20ms zu bekommen.Unterschied btw Gcloud TCP vs HTTP Load Balancer

Beim Debuggen fiel mir auf, dass bei der Verwendung von HTTP LB viel mehr Dateideskriptoren geöffnet sind.

Folgendes ist meine Embedded Jetty-Konfiguration, alle Ideen wären toll! :)

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

Weitere Informationen zum Nicht-HTTP-Lastenausgleich. Ist es eine Art von LVS? Wenn ja, dann kann die Antwort einfach sein - LVS hat eine bessere Leistung als HTTP LB. – user1641854

Antwort

0

sich herausgestellt das das Problem behebt:

httpConnector.setIdleTimeout(100L); 

Obgleich ich bin nicht sicher, warum mit gcloud TCP Load Balancer, die noch kein Thema ist.

Verwandte Themen