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?

  • Limitare il numero di thread max utilizzati da un process nel kernel di linux
  • Qualcuno sa where posso trovare la "prova" che la modalità Fiber di SQL è appena più veloce rispetto alla modalità di thread normale su Win 2008 R2
  • Come faccio a ridurre i thread per limite di process per un'applicazione ISAPI in IIS 7.5
  • Elenco dei moduli PHP che sono sicuri del thread
  • cosa significa apache (lavoratori occupati, operai inattivi)?
  • Redhat 5.5: Il process multifilo utilizza solo 1 CPU del 8 disponibile
  • Java: Limitare il numero di nuclei che un JVM può utilizzare
  • Grafico di dipendenza del thread del kernel Linux?
  • 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.