2011-11-21 9 views
10

Próbuję zoptymalizować moją aplikację internetową za pomocą Google Page Speed ​​API, który wyróżnił brak "Keep-alive" w moich nagłówkach odpowiedzi HTTP jako główną słabość strony.Możliwe włączenie Keep-alive z modułem równoważenia obciążenia?

Podczas rozmowy z moimi administratorami back-end i administratorami sys powiedzieli mi, że używanie Keep-alive na stronie jest niemożliwe, ponieważ używamy load balancera.

Zastanawiam się, czy to jest dokładne? Czy istnieją równoważniki obciążenia, które obsługują Keep-alive?

Wydaje mi się dziwne, że funkcja Page Speed ​​API narzeka na Keep-alive, jeśli nie można jej użyć z równoważnikami obciążenia, ponieważ wyobrażam sobie, że sporo aplikacji i dużych witryn korzysta z równoważenia obciążenia.

Dzięki!

+0

Poinformuj ich, aby przełączyli się na HAProxy i włączali stałe połączenia HTTP. :) – bzlm

+0

Czy to faktycznie powoduje różnicę wydajności lub po prostu utrzymuje ruch w nagłówkach odpowiedzi? –

+0

Jeśli nie wiesz dokładnie, jakie są trwałe połączenia HTTP, nie powinieneś wymagać od swoich programistów i wewnętrznych administratorów sytemu implementacji. – bzlm

Odpowiedz

5

Nie wiem, jaki typ balansowania obciążenia masz ... ale nie sądzę, że uniemożliwiłoby korzystanie z połączeń podtrzymujących połączenie.

System równoważenia obciążenia obsłuży każde przychodzące połączenie z jednym z serwerów zaplecza. Teraz dla każdego obiektu przeglądarka musi utworzyć nowe połączenie tylko po to, aby pobrać ten obiekt (na przykład wszystkie małe obrazy). Nawiązywanie i zamykanie połączeń TCP zajmuje trochę czasu. Dlatego Google Page Speed ​​sugeruje, aby włączyć opcję "keep-alive". Inną opcją jest umieszczenie wszystkich małych obrazków w jednym dużym obrazie i użycie sprite'ów CSS, aby wyświetlić ich część w różnych miejscach na twojej stronie.

Ale z powrotem do systemu równoważenia obciążenia. Jeśli masz moduł równoważenia obciążenia sieciowego, powinien on działać bez żadnych pytań - przekieruje przychodzące połączenie TCP do jednego z serwerów zaplecza. Jeśli masz moduł równoważenia obciążenia HTTP, zaakceptuje połączenie, odczyta żądanie, wyśle ​​żądanie do serwera zaplecza, poczeka na odpowiedź i wyśle ​​odpowiedź z powrotem do przeglądarki. Jeśli włączysz podtrzymywanie, moduł równoważenia obciążenia powinien przekazać następne żądanie, które otrzyma za pośrednictwem tego samego połączenia.

Dla dynamicznych stron, których nie potrzebujesz utrzymywać przy życiu. Keep-alive przydaje się głównie w przypadku treści statycznych (js, images, css), ponieważ na każdej stronie html masz zwykle ponad 10 statycznych obiektów. Dlatego sugerowałbym kontynuowanie udostępniania html przez ten load-balancer i serwowanie statycznej zawartości przez inną nazwę hosta (static.example.com).