Apache 2.2 mpm_worker: più thread o più processi?

Quando si utilizza il Worker MPM in Apache, è ansible eseguire il violino con il numero di processi secondari e il numero di thread server per process figlio.

Quali sono i vantaggi e gli svantaggi di ciascuno? In quali circostanze aumenterebbe l'uno o l'altro?

  • come funziona un'applicazione web con migliaia di richieste?
  • Internet Explorer non può visualizzare la pagina, altri browser possono, eventualmente errore htaccess / server
  • Miglior pratica o generalmente il modo migliore per impostare server web hosting, autorizzazioni, ecc
  • Ho eliminato / etc / passwd ieri e ho problemi con SendMail oggi
  • PHP come module CGI o Apache?
  • Django + Apache + mod_wsgi: Perché lo script wsgi è stato eseguito più volte?
  • Come impostare shmall, shmmax, shmni, ecc ... in generale e per postgresql
  • Consenti l'accesso a PhpMyadmin solo su un host virtuale specificato
  • Durante l'aggiornamento di yum, l'installazione di Python viene aggiornata. Devo riavviare i programmi in esecuzione?
  • Cosa fa l'opzione mkfs.ext4-G?
  • Sospende automaticamente / ibernazione un process quando troppa memory è stata presa
  • Apache SSL su Windows a 64 bit (non un'applicazione Win32 valida)
  • One Solution collect form web for “Apache 2.2 mpm_worker: più thread o più processi?”

    Finora, queste sono state le mie considerazioni più importnti per la determinazione dei thread vs processi:

    1. Le filettature utilizzeranno memory molto less residente di Processi. Sì, con le librerie collegate dynamicmente, una grande quantità di memory viene condivisa tra il process di controllo Apache ed i suoi processi figlio, tuttavia each nuovo process dovrà istanziare tutti i moduli abilitati.

      Questo è facilmente verificabile confrontando l'utilizzo della memory di ciascun process in cui vi sono, ad esempio, 5 processi e 1 thread ciascuno, ovvero 5 processi e 25 thread ciascuno. Nel mio caso qui, each Processo bambino richiede circa 7 MB indipendentemente dalla quantità di Threads.

      + Per le discussioni

    2. Ci vuole più tempo per iniziare in termini di loops di tempo e di CPU per caricare un nuovo process rispetto a un Thread. Ciò può essere verificato verificando la quantità di pagine medi utilizzate tramite 'ab'.

      + Per le discussioni

    3. Tutti i processi Thread dipendono dal Processo .. La più grande preoccupazione qui è che, se qualcosa accade al Processo, esso influirà su tutti i thread che sono associati ad esso. Se sei in esecuzione con un singolo process con un gruppo di thread, allora quando il process muore così saranno le discussioni. Più processi causerebbero quindi una migliore separazione, e quindi maggiore "tolleranza" di colpa se lo volete.

      + Per i processi

    4. Relativo a (3), per i moduli come PHP, la loro memory viene caricata dal process e condivisa in tutte le discussioni. Ciò significa che se hai php con memory_limit impostato a 100Mbs con 25 Thread sotto, allora al massimo il carico tecnicamente ciascuna Thread potrebbe essere in grado di assegnare un massimo di 4MBs ciascuno (naturalmente non succederà in questo modo, alcuni saranno hog, alcuni saranno morire di fame).

    Quindi, alla fine, dipende veramente il tuo caso d'uso. Detto questo, vorrai massimizzare la quantità di Thread usati per diminuire l'utilizzo della memory e aumentare la capacità di risposta. Tuttavia, dovrai bilanciare con una corretta quantità di processi per una migliore tolleranza agli errori.

    Corso Non sono esperto qui perché ho avuto solo recentemente avuto a che fare con questo, quindi non vedo l'ora di vedere quali altre risposte potrebbe pop up qui!

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