2015-05-05 11 views
13

Zaczynam używać http://reactphp.org/ dla żądania HTTP obsługi.Statystyka statusu procesu Reactphp (bezczynność, praca itd.)

Uruchamiam wielu pracowników reagowania, którzy działają na różnych portach, a następnie używam Nginx jako równoważenia obciążenia do obsługi żądań. Podoba mi się

upstream backend { 
    server 127.0.0.1:13300; 
    server 127.0.0.1:13301; 
    ..... 
} 

Wszystko działa dobrze zgodnie z oczekiwaniami.

Pytanie brzmi, jak uzyskać statystyki dotyczące statusu procesu processphp. Ile procesów jest obecnie w stanie bezczynności (oczekiwanie na nowe żądanie), ile procesów działa pod żądaniem itd.

Czy istnieje rozwiązanie tymczasowe?

Albo pomysł, jak obsługiwać statystyki procesu ręcznie.

Przykład - blokowanie zapisu do stanu procesu pamięci podręcznej. Kiedy jest to proces żądania uruchomienia - zwiększ liczbę procesów obsługiwanych, po zakończeniu żądania - zwiększ liczbę procesów bezczynności.

+0

Gdzie są statystyki procesowe narażony? W szczególności reagować na php. Co uri/ścieżka? – Kyle

+0

Pomysł na uzyskanie tej statystyki dla mnie jest zrozumienie, co jest ładowanie i mój serwer. Większość z nich powinna zawierać specjalny program obsługi, który może pokazać mi tę statystykę. Jak liczba bezczynnych pracowników, liczba pracowników przetwarzania. –

+0

Gdzie są statystyki? Dostaję twój pomysł, ale nie wiem jak zareagować php i jak ujawnia jego statystyki? Lub nginx ma status stub, patrz http://nginx.org/en/docs/http/ngx_http_stub_status_module.html – Kyle

Odpowiedz

3

Ostatni raz, gdy miałem zestaw wątków roboczych, ustawiłem kilka tabel w MySQL DB.

pracownicy byli tam, gdzie każdy wątek rejestrował wiersz (podając identyfikator). Wątek blokowałby jego rząd i utrzymywałby kolumnę statusu.

Był także stos instrukcji. Jeśli pracownik zobaczył identyfikator, a tekst "wyjście", zamknie się i wyjdzie. Ostatnią rzeczą byłoby usunięcie tego wiersza. Ustawiony status również zakończyłby działanie.

Wykonałem również raport o stanie i stronę administratora, gdzie mogłem wydawać polecenia i konfigurować zadania dla moich wątków roboczych.

Dzięki temu można zobaczyć, co robił każdy wątek i uzyskać liczbę bezczynnych wątków.

Idle wątki:

SELECT count(id) AS threads WHERE status='idle'; 

Temat liczyć cywilny:

SELECT status, count(id) AS threads GROUP BY status; 
+1

Dziękujemy za udostępnienie tego pomysłu. To jest coś, co nazywam "ręcznie". Jeśli nie znajdę żadnego wbudowanego sposobu, użyję czegoś takiego. –