Come determinare i colli di bottiglia nell'ambiente Ubuntu LAMP

Quali tipi di test dovrei eseguire per determinare i colli di bottiglia sul mio server? Sto cercando di ottimizzare in modo da poter mantenere i picchi di carico pesante quando si verificano. Sto eseguendo Ubuntu in un ambiente LAMP.

  • Ubuntu Server Hotswap RAID 1: hardware o software?
  • IBM Server che cerca server secondari
  • aggiornamento ubuntu 9.04
  • nginx, se tutti i file serviti da properties; di www-data?
  • Perché UDP è più lento di TCP su Ubuntu Server?
  • lsof funziona REALMENTAMENTE lento quando Chromium o Firefox sono aperti
  • Trovare il collo di bottiglia: disco I / O in Windows XP
  • Il collo di bottiglia I / O di Linux con i dispositivi di trasferimento dei dati
  • Come risolvere i problemi di performance lente su AWS EC2 / RDS?
  • Flush-0: n processi causando massiccio collo di bottiglia
  • 3 Solutions collect form web for “Come determinare i colli di bottiglia nell'ambiente Ubuntu LAMP”

    Consiglierei per prima di installare un framework di logging come munin, in modo che disponga di alcuni dati disponibili sul carico base e durante le punte sul server. Quindi, monitorerei le query sul tuo server SQL (specialmente le query lente).

    Utilizzando queste informazioni, è ansible stabilire se le situazioni sono straordinarie o se semplicemente aggiungere l'ultimo chiodo a una macchina altamente caricata e cosa succede, come se si esaurisce la RAM, alcuni processi stanno martellando il disco a volte, o la tua CPU è la questione.

    Questa è una domanda molto ampia. Per misurare qualsiasi cosa, innanzitutto hai bisogno di un indicatore di performance di base. Installare munin e munin-node e valutare la tua linea di base. collectd e il venerabile SNMP sono anche opzioni ma non molto user-friendly.

    Pensa alla tua applicazione. È pesante nel database? Molti IO? CPU (codifica video)? Eseguire alcune normali attività di applicazioni web e vedere where esistono le strozzature, in primo luogo. Utilizza altri strumenti come l' siege , ab o JMeter per automatizzare queste attività.

    Dopo aver stabilito metriche di base e punti di rottura, puoi vedere where migliorare. Come si è detto, questa è una domanda ampia e pertanto ha una risposta piuttosto ampia:

    • I / O legati: stai colpendo il database inutilmente? Qual è la tua cache di query che appare come? Hai bisogno di ottimizzare per scrivere o leggere? Avete bisogno di un server DB separato?

    • Memoria limitata: supponendo che tu non sia un database con I / O e che abbia quanto hai in memory, il tuo set di dati è troppo grande per la memory disponibile? Qual è il tasso di successo della cache? Stai utilizzando un framework di cache separato come memcached ?

    • CPU limitata: è la tua applicazione in grado di sfruttare più nuclei / lavoratori? Lei soffre di problemi di block o contestazione? Prendi in considerazione l'utilizzo di un server web leggero, come il nginx anziché Apache, o l'installazione di un proxy inverso. Può anche essere presente il relativo sysctl.conf (kernel) che è ansible modificare.

    • Rete vincasting: molto improbabile in questa fase del gioco.

    Altri punti e considerazioni:

    • Alcune rapide ottimizzazioni sul tuo DB possono essere fatte con mysqltuner.pl .

    • Provare e simulare il traffico reale il più vicino ansible (ripetere i registri di accesso è un buon inizio).

    • Se hai mai colpito l'area di swap sul disco in un'impostazione DB di produzione, sei in un mondo di male.

    tl; dr Grafico tutto ciò che pensi è rilevante, colpire il tuo server duro, accordare, ripetere.

    Quello che ho trovato è quello di eseguire un'analisi delle capacità prima dell'installazione. Tuttavia c'è un ottimo articolo su quello che stai cercando, spero che questo aiuti.

    http://blog.inarow.net/post/227533559/four-steps-to-diagnose-your-lamp-application

    1) Track MySQL Query che prende oltre un secondo 2) Monitoraggio PHP Memoria Utilizzo & Log Apache Tempi di consegna 3) Log Errori PHP 4) Take Snapshots a un livello OS

    Vorrei anche aggiungere JMeter in questo. http://jakarta.apache.org/jmeter/

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.