
Ich habe einen Server mit Apache/2.4.6 (CentOS)
+ OpenSSL/1.0.2k-fips
(ich weiß, dass dies eine alte Version von Apache ist, aber sie kann derzeit nicht aktualisiert werden). Das MPM-Ereignis wird für die Mehrfachverarbeitung verwendet.
Beim Bereitstellen HTTP
von Inhalten funktioniert alles wie erwartet:
Der Server kann problemlos viele Anfragen gleichzeitig verarbeiten (der Test wurde mit ungefähr 150 Clients durchgeführt, von denen jeder 4 parallele Verbindungen herstellte = 600 Verbindungen). Alle Anfragen zielen auf statische Inhalte ab und verwenden Keepalive.
bei HTTPS/SSL
ist es eine andere Geschichte.
Es werden schnell alle 400 möglichen Threads verwendet (siehe Anzeigetafel). Es werden keine asynchronen Verbindungen hergestellt. Soweit ich weiß, verhält es sich wie mpm worker
.
Zuerst dachte ich, es sei eine Einschränkung und das mpm event
würde nur mit HTTP funktionieren. Aber das ist nicht das, was in derDokumentation(unterWie es funktioniert>Asynchrone Verbindungen) :
Diese Verbesserungen gelten sowohl für HTTP- als auch für HTTPS-Verbindungen.
EDIT: Es gibt einige Informationen inEinschränkungenAbschnitt vonDokumentationdas erklärt, dass in manchen Fällen auf zurückgegriffen werden könnte mpm worker
. Dies scheint hier jedoch nicht zuzutreffen.
Antwort1
Beim Durchsehen des Apache-Quellcodes nach möglichen mpm worker
Fallback-Bedingungen fand ich Folgendes relevantKommentar:
Wenn wir einen Eingabefilter haben, der den Eingabestrom „verstopft“, wie es früher bei mod_ssl der Fall war, führen wir einfach das normale Lesen aus den Eingabefiltern durch, wie es das Worker MPM tut.
Da ich eine alte Version von Apache verwende, könnte das erklären, warum mpm event
es mit SSL nicht gut funktioniert.
EDIT: es sieht so aus, als wäre dies hier gemacht wordenbegehen:
core, mod_ssl: Heben Sie die Einschränkung auf, die verhindert, dass mod_ssl das Ereignis-MPM voll ausnutzt.
Ich verwende Apache 2.4.6
und die Änderung wurde später in veröffentlicht 2.4.7
.