Bug 26533 - Performance: Zusammenführen von Netlogon-Skripten: Userlogon-Skript und Materialverteilung
Performance: Zusammenführen von Netlogon-Skripten: Userlogon-Skript und Mater...
Status: CLOSED FIXED
Product: UCS@school
Classification: Unclassified
Component: Netlogon scripts
UCS@school for UCS 2.4
Other Linux
: P5 enhancement (vote)
: UCS@school 3.0 MS2
Assigned To: Janek Walkenhorst
Felix Botner
:
Depends on: 23410 25707 25777
Blocks: 26517 26521
  Show dependency treegraph
 
Reported: 2012-03-15 16:35 CET by Stefan Gohmann
Modified: 2012-06-11 06:29 CEST (History)
2 users (show)

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional):
Max CVSS v3 score:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Stefan Gohmann univentionstaff 2012-03-15 16:35:01 CET
Die Performance des Listener Moduls sollte nochmal genauer untersucht werden. Ich habe in einem Test 3000 Benutzer angelegt, als 2500 durch waren, war der Listener erst bei Benutzer 35.

+++ This bug was initially created as a clone of Bug #25777 +++

Die Netlogon-Skripte aus den Paketen ucs-school-netlogon-user-logonscripts und 
ucs-school-umc-distribution sollen in einem Paket zusammengeführt werden. Die
einzelnen Funktionalitäten sollen dabei per UCR abschaltbar sein.
Comment 1 Stefan Gohmann univentionstaff 2012-04-25 10:07:16 CEST
Ich sehe hier unterschiedliche Ansätze:

1. Gruppenauflösung und LDAP Abfrage während Login

2. Per Listener Modul die Scripte schrieben

3. Cron-basierte Lösung


2 ist aus meiner Sicht die beste Lösung, da die Abfragen nur einmal gemacht werden. Dinge, die umgesetzt werden könnten:
- Cache mit Shares pro Gruppe. Der Cache könnte invalidiert werden, sobald ein Share oder eine Gruppen-GID geändert wird
- Die Gruppenmitglieder könnten in einem Cache gepflegt werden. Ich bin mir unsicher, ob das hilft, vermutlich ist die LDAP Abfrage schneller
- Die LDAP Verbindung könnte aus dem Listener Modul offen gehalten werden, wenn ich es richtig gesehen habe, dann wird die aktuell immer wieder neu geöffnet
- Es gibt derzeit keine oder kaum Prüfungen, welche Attributen geändert wurden:


Wenn eine Beschreibung eines Benutzers geändert wird, dann werden die folgenden LDAP Abfragen aus dem Listener Modul gestellt:
13.03.12 08:58:28.362  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(|(cn=Marktplatz)(univentionShareSambaName=Marktplatz))) base= scope=sub attr=['cn'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 08:58:28.381  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=posixGroup)(uniqueMember=uid=anton1,cn=schueler,cn=users,ou=school1,dc=dedlock10,dc=local)) base= scope=sub attr=['gidNumber'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 08:58:28.387  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5048)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 08:58:28.388  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5045)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 08:58:28.389  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5049)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0

Wenn ein Benutzer zu einer Klasse hinzugefügt wird, dann werden diese Abfragen abgesetzt:
13.03.12 09:01:43.896  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(|(cn=Marktplatz)(univentionShareSambaName=Marktplatz))) base= scope=sub attr=['cn'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:43.921  LDAP        ( INFO    ) : uldap.search filter=objectClass=* base=uid=anton3,cn=schueler,cn=users,ou=school1,dc=dedlock10,dc=local scope=base attr=[] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:43.926  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=posixGroup)(uniqueMember=uid=anton3,cn=schueler,cn=users,ou=school1,dc=dedlock10,dc=local)) base= scope=sub attr=['gidNumber'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:43.928  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5048)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:43.929  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5045)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:43.929  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5051)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:43.948  LDAP        ( INFO    ) : uldap.search filter=objectClass=* base=uid=anton13,cn=schueler,cn=users,ou=school1,dc=dedlock10,dc=local scope=base attr=[] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:43.955  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=posixGroup)(uniqueMember=uid=anton13,cn=schueler,cn=users,ou=school1,dc=dedlock10,dc=local)) base= scope=sub attr=['gidNumber'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:43.957  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5048)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:43.957  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5045)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:43.958  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5051)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:43.977  LDAP        ( INFO    ) : uldap.search filter=objectClass=* base=uid=anton23,cn=schueler,cn=users,ou=school1,dc=dedlock10,dc=local scope=base attr=[] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:43.981  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=posixGroup)(uniqueMember=uid=anton23,cn=schueler,cn=users,ou=school1,dc=dedlock10,dc=local)) base= scope=sub attr=['gidNumber'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:43.983  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5048)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:43.983  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5045)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:43.984  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5051)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.003  LDAP        ( INFO    ) : uldap.search filter=objectClass=* base=uid=anton33,cn=schueler,cn=users,ou=school1,dc=dedlock10,dc=local scope=base attr=[] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.004  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=posixGroup)(uniqueMember=uid=anton33,cn=schueler,cn=users,ou=school1,dc=dedlock10,dc=local)) base= scope=sub attr=['gidNumber'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.006  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5048)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.007  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5045)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.007  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5051)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.027  LDAP        ( INFO    ) : uldap.search filter=objectClass=* base=uid=anton43,cn=schueler,cn=users,ou=school1,dc=dedlock10,dc=local scope=base attr=[] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.031  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=posixGroup)(uniqueMember=uid=anton43,cn=schueler,cn=users,ou=school1,dc=dedlock10,dc=local)) base= scope=sub attr=['gidNumber'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.033  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5048)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.034  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5045)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.034  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5051)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.055  LDAP        ( INFO    ) : uldap.search filter=objectClass=* base=uid=anton53,cn=schueler,cn=users,ou=school1,dc=dedlock10,dc=local scope=base attr=[] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.057  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=posixGroup)(uniqueMember=uid=anton53,cn=schueler,cn=users,ou=school1,dc=dedlock10,dc=local)) base= scope=sub attr=['gidNumber'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.059  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5048)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.059  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5045)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.060  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5051)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.090  LDAP        ( INFO    ) : uldap.search filter=objectClass=* base=uid=anton63,cn=schueler,cn=users,ou=school1,dc=dedlock10,dc=local scope=base attr=[] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.092  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=posixGroup)(uniqueMember=uid=anton63,cn=schueler,cn=users,ou=school1,dc=dedlock10,dc=local)) base= scope=sub attr=['gidNumber'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.093  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5048)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.094  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5045)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.095  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5051)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.135  LDAP        ( INFO    ) : uldap.search filter=objectClass=* base=uid=anton73,cn=schueler,cn=users,ou=school1,dc=dedlock10,dc=local scope=base attr=[] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.140  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=posixGroup)(uniqueMember=uid=anton73,cn=schueler,cn=users,ou=school1,dc=dedlock10,dc=local)) base= scope=sub attr=['gidNumber'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.142  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5048)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.142  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5045)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.143  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5051)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.175  LDAP        ( INFO    ) : uldap.search filter=objectClass=* base=uid=anton83,cn=schueler,cn=users,ou=school1,dc=dedlock10,dc=local scope=base attr=[] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.179  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=posixGroup)(uniqueMember=uid=anton83,cn=schueler,cn=users,ou=school1,dc=dedlock10,dc=local)) base= scope=sub attr=['gidNumber'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.181  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5048)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.182  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5045)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.182  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5051)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.201  LDAP        ( INFO    ) : uldap.search filter=objectClass=* base=uid=anton93,cn=schueler,cn=users,ou=school1,dc=dedlock10,dc=local scope=base attr=[] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.207  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=posixGroup)(uniqueMember=uid=anton93,cn=schueler,cn=users,ou=school1,dc=dedlock10,dc=local)) base= scope=sub attr=['gidNumber'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.209  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5048)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.209  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5045)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.210  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5051)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.229  LDAP        ( INFO    ) : uldap.search filter=objectClass=* base=uid=anton99,cn=schueler,cn=users,ou=school1,dc=dedlock10,dc=local scope=base attr=[] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.235  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=posixGroup)(uniqueMember=uid=anton99,cn=schueler,cn=users,ou=school1,dc=dedlock10,dc=local)) base= scope=sub attr=['gidNumber'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.237  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5048)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.237  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5045)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.238  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5051)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
13.03.12 09:01:44.239  LDAP        ( INFO    ) : uldap.search filter=(&(objectClass=univentionShareSamba)(univentionShareGid=5057)) base= scope=sub attr=['cn', 'univentionShareHost', 'univentionShareSambaName'] unique=0 required=0 timeout=-1 sizelimit=0
Comment 2 Janek Walkenhorst univentionstaff 2012-05-10 18:22:59 CEST
Die LDAP-Verbindung wird jetzt wiederverwendet. (Anstatt pro Benutzer mehrere neue Verbindungen zu öffnen)
Durch die Verwendung von <set>s wurde die Performance ohne Verhaltensänderung gesteigert.
Änderungen an uninteressanten Benutzer-Attributen führen nun nicht mehr zum Neuschreiben eines identischen Skripts.
Durch Umstellen und Umschreiben wurden kleinere Verbesserungen erreicht.
Einige LDAP-Anfragen wurden in dedizierte Funktionen ausgelagert um Caching zu ermöglichen. (Dies kann hinzugefügt werden, wenn die Performance noch nicht ausreicht, wurde noch nicht getan, weil dies zu subtilen Problem führen könnte)

ucs-school-netlogon-user-logonscripts (7.0.4-1)


Der Overhead des Listener-Skripts für das Anlegen von 268 Benutzern (ucs-school-create-dummy-users) wurde von ~133s auf ~6s gegenüber einem Listener-Skript mit noop-handler() verringert.
Comment 3 Felix Botner univentionstaff 2012-05-15 17:25:17 CEST
OK Performance, 555 Benutzer 
 ucs-school Import
  alt: 9min
  neu: 2,5min
 Listener resync
  alt: 4min
  neu: 20s

OK - Klassenshares werden eingebunden

OK - Änderung am Benutzerobjekt -> Aktualisierung

OK - Änderung am Gruppenobjekt -> Aktualisierung

OK - Änderung am Freigabeobjekt -> Aktualisierung

OK - Common Shares werden eingebunden

OK - validServers werden beachtet


Changelog Eintrag fehlt.
Comment 4 Janek Walkenhorst univentionstaff 2012-05-16 13:51:56 CEST
(In reply to comment #3)
> Changelog Eintrag fehlt.
Hinzugefügt.
Comment 5 Felix Botner univentionstaff 2012-05-18 10:00:21 CEST
OK
Comment 6 Stefan Gohmann univentionstaff 2012-06-11 06:29:53 CEST
UCS@school 3.0 wurde veröffentlicht. Sollte der hier beschriebene Bug mit einer  neueren Version von UCS@school erneut auftreten, so sollte dieser Bug dupliziert werden: "Clone This Bug"