Apache KeepAliveTimeout
istnieje, aby zamknąć połączenie podtrzymujące połączenie, jeśli nowe żądanie nie zostanie wydane w określonym czasie. Pod warunkiem, że użytkownik nie zamknie przeglądarki / karty, ten limit czasu (zwykle 5-15 sekund) ostatecznie zamyka większość utrzymywanych połączeń i zapobiega marnowaniu zasobów serwera przez utrzymywanie połączeń na czas nieokreślony.
Teraz MaxKeepAliveRequests
dyrektywa ogranicza liczbę żądań HTTP KeepAlive
obsługiwanych przez pojedyncze połączenie TCP (pozostawione otwarte z powodu ). Ustawienie tej wartości 0
oznacza, że dozwolona jest nieograniczona liczba żądań.
Dlaczego miałbyś kiedykolwiek ustawiać to na coś innego niż „nieograniczony”? Pod warunkiem, że klient nadal aktywnie wysyła żądania, jaka szkoda może pozwolić mu na to samo połączenie podtrzymujące połączenie? Po osiągnięciu limitu żądania wciąż przychodzą, tylko przy nowym połączeniu.
Z mojego punktu widzenia nie ma sensu ograniczać tego. czego mi brakuje?
źródło
Częściowo, aby jeden użytkownik nie blokował wszystkich gniazd połączeń. Bez ograniczeń jeden złośliwy lub źle napisany klient może przejąć każde dostępne połączenie i zachować je na zawsze. Nie jest to jednak świetne ograniczenie w porównaniu do czegoś takiego jak limit połączeń na IP.
Głównie równoważenie obciążenia, ale szczególnie w odniesieniu do konserwacji. Jeśli chcesz przełączyć serwer w tryb offline, upuść go na 0 połączeń, ale pozwól, aby istniejące połączenia zakończyły się przez pewien czas. Ograniczenie liczby żądań utrzymywania aktywności oznacza, że ostatecznie użytkownicy z wdziękiem utworzą nowe połączenie i zostaną przeniesieni na nowy serwer zaplecza. Prawdopodobnie jakiś sposób, aby zasygnalizować serwerowi, że powinien całkowicie przestać akceptować podtrzymania podczas procesu drenażu, byłby jeszcze lepszy, ale o ile wiem, taka funkcja nie istnieje.
źródło