2015-05-05 7 views
13

Ho iniziato a utilizzare http://reactphp.org/ per gestire la richiesta HTTP.Statistica dello stato del processo Reactphp (inattivo, funzionante, ecc.)

Eseguo più operatori di reazione che vengono eseguiti su porte diverse e quindi utilizzare Nginx come bilanciamento del carico per gestire le richieste. Ti piace questa

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

Tutto funziona bene come previsto.

La domanda è come ottenere una statistica dello stato del processo reactphp. Quanti processi sono attualmente in stato di inattività (in attesa di una nuova richiesta), quanti processi è lavoro su richiesta, ecc.

Esiste una soluzione alternativa?

o idea come gestire statistica processo a mano.

Esempio: blocco della scrittura in uno stato di processo della cache. Quando è il processo di richiesta di avvio - aumentare il numero di processi gestiti, al termine della richiesta - aumentare il numero di processi inattivi.

+0

dove sono esposti le statistiche di processo? In risposta php in particolare. Quale uri/percorso? – Kyle

+0

L'idea per ottenere questa statistica per me è capire cosa sta caricando il mio server. Soprattutto ci dovrebbe essere un gestore speciale che può mostrarmi questa statistica. Come numero di lavoratori inattivi, numero di lavoratori che lavorano. –

+0

Dove sono le statistiche? Ho la tua idea, ma non so reagire php e come espone le sue statistiche? Oppure nginx ha uno stub di stato, vedi http://nginx.org/en/docs/http/ngx_http_stub_status_module.html – Kyle

risposta

3

L'ultima volta che ho avuto una serie di thread di lavoro ho impostato alcune tabelle in un DB MySQL.

era dove ogni thread registrava una riga (dandogli un ID). Il thread bloccherebbe la sua riga e manterrà la colonna di stato.

C'era anche una pila istruzioni. Se il lavoratore ha visto il suo ID e il testo "exit" si chiudeva e usciva. L'ultima cosa sarebbe cancellare la sua riga. Avrebbe funzionato anche lo stato di impostazione dell'uscita.

Ho anche creato un rapporto di stato e una pagina di amministrazione in cui è possibile emettere comandi e impostare attività per i miei thread di lavoro.

Ciò consentirebbe quindi di vedere cosa stava facendo ciascun thread e ottenere un conteggio dei thread inattivi.

Idle discussioni:

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

numero di thread di stato:

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

Grazie per aver condiviso questa idea. Questo è qualcosa che io chiamo "a mano". Se non riesco a trovare alcun modo build-in userò qualcosa di simile. –