2013-02-24 14 views

risposta

6

Questo è spiegato nel numero Apache performance tuning documentation, sotto "Serializzazione accept() - prese multiple". In breve, con almeno alcuni sistemi operativi, una connessione in ingresso si sveglierà tutti i processi Apache che sono in attesa di connessioni in entrata in select() o poll(), ma causerà il malfunzionamento dello accept() su tutti tranne uno di essi. Questo è inefficiente, quindi viene utilizzato un mutex per garantire che solo un processo accetti una connessione in ingresso alla volta.

+0

+1 che è ragionevole. – rook

2

Leggi i commenti nella fonte a cui sei collegato. Sembra che il mutex non stia davvero proteggendo l'operazione accept, ma l'elenco di socket di ascolto che devono essere interrogati (si noti che il mutex non è usato quando c'è solo un socket di ascolto, almeno non su sistemi non interrotti dove funziona accept propriamente). Se questo potrebbe cambiare a runtime, allora il codice è probabilmente corretto. Ma ho la sensazione che stiano facendo qualcosa di insensato. Questo è Apache, quindi non dovresti aspettarti codice di alta qualità o ragionevole ...

+4

Bene, * ha * il mio +1 fino alle dichiarazioni di chiusura .. –

Problemi correlati