Univention Bugzilla – Bug 26533
Performance: Zusammenführen von Netlogon-Skripten: Userlogon-Skript und Materialverteilung
Last modified: 2012-06-11 06:29:53 CEST
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.
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
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.
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.
(In reply to comment #3) > Changelog Eintrag fehlt. Hinzugefügt.
OK
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"