2013-02-24 6 views

Antwort

6

Dies wird in der Apache performance tuning documentation, unter "accept() Serialisierung - Mehrfachsteckdosen" erklärt. Kurz gesagt weckt eine eingehende Verbindung unter mindestens einigen Betriebssystemen alle Apache-Prozesse, die auf eingehende Verbindungen in select() oder poll() warten, aber die accept() auf alle außer einem von ihnen fehlschlagen. Dies ist ineffizient, sodass ein Mutex verwendet wird, um sicherzustellen, dass nur ein Prozess eine eingehende Verbindung gleichzeitig akzeptiert.

+0

+1 das ist vernünftig. – rook

2

Lesen Sie die Kommentare in der Quelle, mit der Sie verbunden sind. Es scheint, dass der Mutex nicht wirklich die accept Operation schützt, sondern die Liste der abhörenden Sockets, die abgefragt werden müssen (beachten Sie, dass der Mutex nicht verwendet wird, wenn es nur einen abhörenden Socket gibt, zumindest nicht auf nicht defekten Systemen, wo accept funktioniert richtig). Wenn sich dies zur Laufzeit ändern könnte, ist der Code wahrscheinlich korrekt. Aber ich habe das Gefühl, dass sie nur etwas Unsinniges tun. Dies ist Apache, also sollten Sie keinen hochwertigen oder gar vernünftigen Code erwarten ...

+4

Nun, es * hatte * meine + 1 bis zu den abschließenden Aussagen .. –

Verwandte Themen