Hallo,
eine allgemeine Verständnisfrage: Warum ist ein ldapsearch bei einer LDAP-Datenbank mit vielen ACLs so viel langsamer als bei einer mit weniger ACLs?
Gut, die Antwort liegt quasi auf der Hand, ich möchte daher meine Frage leicht modifizieren:
Warum ist ein ldapsearch, also ein Lesezugriff, bei einer LDAP-Datenbank mit vielen ACLs, die eigentlich nur den Schreibzugriff regeln, so viel langsamer als bei einer mit weniger ACLs?
Ich habe hier zum Testen 3 UCS-Server zur Verfügung: 1x Master, 1x Backup, 1x Slave. Die ACLs wurden von mir nicht angefasst und müssten daher UCS-Default sein.
Folgenden Befehl habe ich testweise jeweils lokal als unpreviligierter Benutzer ausgeführt: “time ldapsearch -xLLL > /dev/null”
Ergebnis: Bei Master und Backup sind es jeweils fast 9 Sekunden, beim Slave nur ein Bruchteil einer Sekunde. Der Faktor liegt zwischen 10 und 100. Und dass es an den ACLs liegt, habe ich spaßeshalber mal getestet, indem ich diese auf dem Master deutlich gekürzt habe. (Die Hardware ist jeweils identisch)
Was mich daran aber wundert ist, dass die vielen ACLs quasi nur den Schreibzugriff regeln. Lesen darf eh jeder.
Warum sind nun Lesezugriffe langsamer? Was technisch vielleicht gut begründbar ist, ergibt für mich logisch irgendwie keinen Sinn.
Kann man die ACLs nicht irgendwie so optimieren, dass slapd bei Lesezugriffen sofort sieht, dass dies eh jeder darf und diese somit nicht “aufgehalten” werden?
(Oder ist es gar ein Fehler in unserer Konfiguration, dass sich das so auswirkt und Lesezugriffe gar nicht für Jedermann erlaubt sein sollten?)
Der Grund weshalb ich frage: Gerade auf dem Master muss das LDAP beschrieben werden können, weshalb dort die ACLs notwendig sind. Gerade dort läuft aber auch der Univention Directory Manager. Eine unglückliche Kombination. Gibt es eine einfache Möglichkeit, z.B. zusätzlich ein Slave-LDAP auf dem Master zu starten, um Zugriffe zu beschleunigen?
Ein Univention Directory Manager, der für jeden “Klick” 10 bis 20 Sekunden benötigt (es sind ja meist gleich mehrere LDAP-Anfragen dank der vielen Abstraktionsschichten im python-Backend) ist jedenfalls nicht schön, aber ab einer bestimmten Größe wohl üblich.
Des weiteren führt dies dazu, bestimmte, von vielen LDAP-Anfragen abhängige Dienste, auf jeden Fall nicht auf einen UCS Master oder Backup zu installieren.
Gruß
Michael Heide