Ottimizzazione dell'architettura server con Apache / Vernice / MySQL su Linux

Io sono un amministratore del server per una piccola start-up come una joint venture (che significa che non sono affatto un esperto esperto in questo argomento) e recentemente ho aiutato a spostare il sito da una macchina a windows singole in un gruppo di macchine su Rackspace Nube.

Attualmente il sito si riferisce a circa 600 richieste / secondo, ma data la quantità di risorse che abbiamo assegnato, ritengo che possa essere molto più elevato.

  • Determinare il process originale per il traffico in output
  • Rimozione di Apache da Debian 5
  • Come posso eseguire lo script di shell all'avvio (avvio)
  • L'intestazione di Access-Control-Allow-Origin non funziona con mod_rewrite + mod_jk
  • Differenze tra tunnel SSH e OpenVPN
  • Come bloccare PROPFIND (o qualsiasi altro metodo) su Apache
  • Adesso stiamo usando il Rackspace Cloud Balancer (Apache Zeus) di fronte a 8 server web. Ogni server web sta eseguendo Linux su un'istanza di cloud da 512 MB e il contenuto viene utilizzato da Varnish con un back-end di Apache 2.

    L'applicazione web è PHP. Apache è in esecuzione in mpm-worker, e php è in esecuzione in fcgi. PHP APC è abilitato pure.

    Per quanto riguarda il backend del database, ho due istanze del server 4gb che servono MySQL in una configuration di replica Master-Master con metà dei server web che puntano a ciascun server. L'applicazione è abbastanza basata su database, dando così tante risorse dedicate al database.

    La prestazione è generalmente buona, tuttavia abbiamo avuto alcuni picchi di carico che l'infrastruttura esistente non era in grado di gestire, quindi ho aumentato dynamicmente la dimensione dei nodes. Questo è andato bene, ma ritengo che, sotto le condizioni di carico specifiche che avevamo, ho dovuto gettare molto più risorse all'infrastruttura di quanto avessi previsto di mantenere il sito in su e veloce. Nella mia ricerca sembra che stiamo utilizzando una configuration molto rara per avere tante installazioni separate di vernice, e potrei avere bisogno di esplorare l'opzione di un livello di memorizzazione nella cache.

    Qui viene illustrata una panoramica dell'architettura corrente (google docs link)

    Il model di pricing del cloud rackspace è abbastanza lineare, il che significa che un'istanza del server da 1024mb è esattamente il doppio del costo di un'istanza di 512mb. In quanto tale, sto cercando di massimizzare le mie performance mentre lavoro all'interno della stessa quantità di risorse (costo).

    Il mio pensiero iniziale è quello di rimuovere l'equilibratore di carico rackspace a favore dell'utilizzo di una singola istanza di vernice davanti ai back-end di apache e forse rendere il back-end apache essere istanze 4x 1gb piuttosto che istanze 8x 512mb. Il costo dell'equilibratore di carico è estremamente economico, per cui giustificare la sostituzione con un altro server dedicato, il guadagno di performance dovrebbe essere grande.

    Ho giocato con l'idea di HAProxy e Nginx pure, ma non voglio iniziare a sperimentare ciecamente in un sito di produzione.

    Il mio objective è quello di poter servire fino a 2000 req / s circa la stessa allocazione hardware.

    Modifica: Ho avuto mod_pagespeed lavorando per un po 'che mi ha messo da circa 100 req / s, ma mi sembrava di avere un sacco di problemi con come interagiva con la vernice.

    Modifica: vernice VCL , disco è Rackspace Cloud predefinito (non-san, SSS), il database è attualmente circa 1,5 gb. Nessun swap su disco in condizioni normali. I processi Apache sono circa 20 MB ciascuno. I processi di php-cgi tendono a masticare molte più risorse.

  • Reimpostare la password dell'utente senza radice
  • Freebsd o Linux? come router BGP oltre 100mbps
  • Linux: come dare un'authorization all'utente per riavviare apache?
  • Come posso facilmente convertire entity framework; speciali HTML da un stream di input standard in Linux?
  • Checkpoint VPN su Linux
  • Come posso programmare un riavvio su Linux?
  • 2 Solutions collect form web for “Ottimizzazione dell'architettura server con Apache / Vernice / MySQL su Linux”

    Vorrei andare con una RAM ad alta velocità (controllare l'utilizzo della vernice RAM utilizzando gli strumenti di vernice e aumentare fino a fine) istanze di vernice e nessun bilanciatore di carico (o due vernici e carico-bilanciatore che si desidera alta disponibilità) e tanti apache server come è necessario … se la tua applicazione è legata alla CPU (più server) oa RAM (server con più alto livello di MEM) è a te.

    Anche il gioco con le impostazioni della cache (cosa può essere fatturato per quanto tempo) aiuterà.

    OP, è ansible utilizzare http://blitz.io per alcune marcature gratuite. Inoltre, esaminare i 'ab' e 'httperf' per alcuni strumenti di marcatura a row di command.

    La vernice può essere usata con grande successo con configuration minima. Inoltre, se si utilizzano applicazioni pesanti di PHP, consiglio di installare APC.

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