Non so come formulare correttamente questa domanda, quindi ti invitiamo a suggerire modifiche.
Ho aiutato a sviluppare un servizio RESTful interno a una società per cui lavoro, e sembra aver colpito un muro in termini di prestazioni senza saturare il canale di rete (credo). Ho bisogno di farlo funzionare più velocemente, ma non ho abbastanza dati per andare avanti. Come misuro, raccolgo e analizzo le metriche delle prestazioni come l'utilizzo della rete, del disco, della memoria e della CPU? In questo momento ho solo registri con data e ora in cui posso provare ad estrarre alcuni dati di temporizzazione analizzandoli, ma sembra che ci dovrebbe essere un modo più diretto. Inoltre dovrei rendere il sistema distribuito in futuro, dovrei aggregare questi dati in qualche modo su più macchine, e dovrei rendere questo processo asincrono e resistente ai problemi di rete.
Quali strumenti o approcci generali esistenti funzionano meglio in questo tipo di installazione? Gradirei ogni spintarella nella giusta direzione, non so dove guardare.
UPD: Mi rivolgo a FreeBSD, il mio box di sviluppo è un MacBook; le parti di sollevamento pesanti sono scritte in C ++, le parti talk-to-client sono scritte in PHP (attualmente Yii) gestite da Apache con un proxy nginx, anche se sto considerando di portarle in C ++ e suddividerle in più parti lungo la separazione di comandi e query linea di pensiero. Attualmente la coda dei comandi è gestita da PostgreSQL, ed è una delle cose che proverò a riscrivere da zero. C'è un supervisore semplicistico che mi permette di vedere il log di stderr del demone di sollevamento pesante in tempo reale, ma altrimenti non fa molto.