Jaka jest optymalna wartość dla pasażera Phusion PassengerMaxRequestQueueSize

Wiem, że to zależy od sprzętu box, ale na przykład, jeśli są ustawione procesy 100, domyślna kolejka jest również 100. Czy sensowne jest zwiększenie PassengerMaxRequestQueueSize do 200 czy 300? Prawdopodobnie zależy to od wolnej pamięci. Myśli?

Najlepszą odpowiedzią będzie wyjaśnienie ustawienia i prawdopodobnie jeden lub dwa przykłady, zakładając, że proces serwera wymaga 2-3 sekund.

Z góry dzięki!

Author: Sam, 2013-12-05

2 answers

Dlaczego warto ograniczyć kolejkowanie

Wszelkie żądania, które nie są natychmiast obsługiwane przez proces aplikacji, są w kolejce. Kolejkowanie jest zazwyczaj złe: często oznacza to, że twój serwer nie może obsłużyć żądań wystarczająco szybko.

Większa Kolejka oznacza, że żądania są mniej prawdopodobne, aby zostały odrzucone. Wiąże się to jednak z pewną wadą: im większa Kolejka, tym dłużej Goście muszą czekać, zanim zobaczą odpowiedź. To powoduje, że klikają przeładuj, dzięki czemu kolejkuj jeszcze dłużej (ich poprzednie żądanie pozostanie w kolejce; system operacyjny nie wie, że się rozłączył, dopóki nie spróbuje wysłać danych z powrotem do odwiedzającego), lub powoduje, że odchodzi z frustracji.

Więc posiadanie limitu w kolejce to dobra rzecz. Ogranicza wpływ powyższej sytuacji.

Należy upewnić się, że żądania są w kolejce jak najmniej. To może oznaczać:

  • uczynienie aplikacji szybszą (jeśli twoje obciążenie jest związane z CPU).
  • modernizacja do szybszego sprzętu (jeśli twoje obciążenie jest związane z CPU).
  • zwiększenie ustawień współbieżności aplikacji (jeśli obciążenie jest związane z I/O), np. poprzez zwiększenie liczby procesów lub wątków.

Jeśli nie możesz zapobiec kolejkowaniu żądań, następną najlepszą rzeczą do zrobienia jest zachowanie kolejki krótko i wyświetlenie przyjaznego Komunikatu o błędzie po osiągnięciu limitu kolejki. Coś w stylu: "przepraszamy, Wiele osób nas teraz odwiedza. Spróbuj ponownie później."dokumentacja dla PassengerMaxRequestQueueSize mówi ci, jak to zrobić.

Optymalna wartość dla rozmiaru kolejki

Trudno powiedzieć, jaka powinna być optymalna wielkość kolejki. Dobrą zasadą jest: Ustaw rozmiar kolejki żądań na maksymalną liczbę żądań, które możesz obsłużyć w ciągu jednej sekundy. W zależności od sytuacji może być konieczne dostosowanie rzeczy trochę.

Ta zasada wywodzi się z pojęcia oczekiwanego ruchu seryjnego. Ile jednoczesne żądania oczekujesz na swoim serwerze?

Załóżmy, że rozmiar kolejki wynosi 100, i że z jakiegokolwiek powodu otrzymujesz 150 żądań w tym samym czasie . Załóżmy, że twój serwer jest wystarczająco szybki, aby obsłużyć 150 żądań w pół sekundy, więc wiesz, że nie jest to problem z wydajnością. Ale jeśli masz rozmiar kolejki żądań 100, to 50 z tych żądań zostanie odrzuconych z błędem "Pełna Kolejka żądań".

W takiej sytuacji należy ustawić rozmiar kolejki na Maksymalna liczba jednoczesnych żądań, które Twoim zdaniem mogą być bezpiecznie obsługiwane bez problemów z wydajnością.

 35
Author: Hongli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-09 07:35:38

To więc pytanie i dokumenty pasażerskie tutaj mówią więcej o pracy z tym. Jeśli chcesz uzyskać więcej informacji o tym, dlaczego dzieje się to na twoim serwerze, możesz spróbować uruchomić passenger-status (Zwykle musisz uruchomić to jako root).

Jeśli chcesz ustawić niestandardową stronę błędu, gdy odwiedzający zobaczą ten problem, możesz użyć następującego (w Apache), aby ustawić niestandardową stronę błędu:

PassengerErrorOverride on
ErrorDocument 503  /error503.html

Jak wspomniano przez Hongli można również zmienić ustawienie Pasazermaxrequestqueuesize to the higher number to queue more requests. Możesz również ustawić tę wartość na 0 i wyłączyć ją(w większości sytuacji nie jest to jednak optymalne rozwiązanie).

W celach informacyjnych, domyślnym Komunikatem o błędzie, który użytkownik witryny zobaczy, gdy przekroczy ten limit, jest:

This website is under heavy load

We're sorry, too many people are accessing this website at the same time. We're working on this problem. Please try again later.
 8
Author: SnapShot,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:46:57