[gelöst]LDAP Abfrage sehr langsam

Hilfe zu OTRS Problemen aller Art
Post Reply
SimpsonFan
Znuny newbie
Posts: 77
Joined: 13 Aug 2009, 13:30
Znuny Version: 3.1.12

[gelöst]LDAP Abfrage sehr langsam

Post by SimpsonFan »

Hallo OTRS-Gemeinde,

ich habe seit ein paar Tagen das Problem das eine LDAP Abfrage ziemlich lange dauert. Dieses Verhalten tritt z.b auf wenn ich ein Ticket eröffne und oben den Namen des Kunden eintrage. Normalerweise erscheint nach dem Eintragen des Namens nach ein paar Sekunden eine Auswahl von Treffern im LDAP Verzeichniss aber seit ein paar Tagen eben nicht mehr. Wenn ich eine manuelle Abfrage über den "Kunden" Menü-Punkt im Agent-Interface starte dauert es ebenfalls sehr lange (ca. 30-40 Sekunden). Ein Wechsel der LDAP-Quelle brachte keinen Erfolg. Eine Abfrage auf der Konsole mit "ldapsearch" funktioniert tadellos und schnell.
Seltsamerweise funktioniert die Agenten Anmeldung, ebenfalls über den gleichen LDAP Server, problemlos und schnell. Im Log-File taucht immer nur der Eintrag auf das die Authentifizierung erfolgreich war.

Hat vielleicht jemand eine Idee ?

Danke für eure Hilfe ! :D
Last edited by SimpsonFan on 15 Feb 2010, 14:49, edited 1 time in total.
OS: Debian 4.0
OTRS Version: 2.4.9
DB: MySQL
SimpsonFan
Znuny newbie
Posts: 77
Joined: 13 Aug 2009, 13:30
Znuny Version: 3.1.12

LDAP Abfrage sehr langsam

Post by SimpsonFan »

Nachtrag: Auf einem zweiten Testsystem funktionierte bisweilen das Auslesen von LDAP Daten problemlos. Als ich heute die Konfiguration des Produktivsystems auf das Testsystem kopiert habe, zeigte das Testsystem auf einmal die gleichen Symptome wie das Produktivsystem. Vielleicht stimmt ja etwas an meiner Konfig nicht ?

Code: Select all

    # CustomerUser
    # (customer user ldap backend and settings)
    $Self->{CustomerUser} = {
        Name => 'LDAP Datenquelle',
        Module => 'Kernel::System::CustomerUser::LDAP',
        Params => {
            # ldap host
            Host => 'ldaps://ldapserver',
            # ldap base dn
            BaseDN => 'ou=users,dc=meinefirma,dc=de',
            # search scope (one|sub)
            SSCOPE => 'sub',
#            # The following is valid but would only be necessary if the
#            # anonymous user does NOT have permission to read from the LDAP tree
            UserDN => 'uid=user,ou=users,dc=meinefirma,dc=de',
            UserPw => 'geheim',
            # in case you want to add always one filter to each ldap query, use
            # this option. e. g. AlwaysFilter => '(mail=*)' or AlwaysFilter => '(objectclass=user)'
            AlwaysFilter => '',
            # if your frontend is e. g. iso-8859-1 and the charset of your
            # ldap server is utf-8, use this options (if not, ignore it)
#            SourceCharset => 'utf-8',
#            DestCharset => 'iso-8859-1',
            # Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
#            Params => {
#                port => 389,
#                timeout => 120,
#                async => 0,
#                version => 3,
#            },
        },
        # customer uniq id
        CustomerKey => 'uid',
        # customer #
        CustomerID => 'mail',
        CustomerUserListFields => ['cn','mail'],
        CustomerUserSearchFields => ['givenname','sn','cn','mail'],
        CustomerUserSearchPrefix => '',
        CustomerUserSearchSuffix => '*',
        CustomerUserSearchListLimit => 250,
        CustomerUserPostMasterSearchFields => ['mail','mailLocalAddress','sn','cn'],
        CustomerUserNameFields => ['givenname', 'sn','cn','mail'],
        # show now own tickets in customer panel, CompanyTickets
        CustomerUserExcludePrimaryCustomerID => 0,
        # add a ldap filter for valid users (expert setting)
#       CustomerUserValidFilter => '(!(description=gesperrt))',
        # admin can't change customer preferences
        AdminSetPreferences => 0,
        Map => [
            # note: Login, Email and CustomerID needed!
            # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly
#            [ 'UserSalutation', 'Title',      'title',           1, 0, 'var', '', 0 ],
            [ 'UserFirstname',  'Firstname',  'givenname',       1, 1, 'var', '', 0 ],
            [ 'UserLastname',   'Lastname',   'sn',              1, 1, 'var', '', 0 ],
            [ 'UserType',       'Status',     'UserType',        1, 0, 'var', '', 0 ],
            [ 'UserLogin',      'Username',   'uid',             1, 1, 'var', '', 0 ],
            [ 'UserEmail',      'Email',      'mail',            1, 1, 'var', '', 0 ],
            [ 'UserCustomerID', 'CustomerID', 'mail',            0, 1, 'var', '', 0 ],
#            [ 'UserCustomerIDs', 'CustomerIDs', 'second_customer_ids', 1, 0, 'var', '', 0 ],
#            [ 'UserPhone',      'Phone',      'telephonenumber', 1, 0, 'var', '', 0 ],
#            [ 'UserAddress',    'Address',    'postaladdress',   1, 0, 'var', '', 0 ],
            [ 'HomeDirectory',  'Home-Verz.', 'homeDirectory',   1, 0, 'var', '', 0 ],
            [ 'UserStatus',     'Aktivitaet', 'accountStatus',   1, 0, 'var', '', 0 ],
#            [ 'UserComment',    'Comment',    'description',     1, 0, 'var', '', 0 ],
        ],
    };

Danke für eure Hilfe
OS: Debian 4.0
OTRS Version: 2.4.9
DB: MySQL
Joyner
Znuny expert
Posts: 185
Joined: 08 Feb 2008, 14:49
Znuny Version: 2.2.8
Location: Berlin

LDAP Abfrage sehr langsam

Post by Joyner »

Hi,

gibt es in eurer wirklich ein mailLocalAddress?

Code: Select all

[...]
CustomerUserPostMasterSearchFields => ['mail','mailLocalAddress','sn','cn'],
[...]
[ 'UserLogin',      'Username',   'uid',             1, 1, 'var', '', 0 ],
[...]
...und versuch anstelle der 'uid' doch mal den 'sAMAccountname'

Kommentiere ggf. das 'AdminSetPreferences " aus.

mfg
Sebastian
Produktiv: OTRS 2.4.7, CiCS 3.1.5, Eigenentwicklungen
β-Testing/Mirror: OTRS 2.4.7, ITSM 2.0.2, CiCS(::ITSM) 3.1.5 (2.1.6), Eigenentwicklungen OS: Win2003, XAMPP, Apache2.2/MySQL 5, Trac/SVN
SimpsonFan
Znuny newbie
Posts: 77
Joined: 13 Aug 2009, 13:30
Znuny Version: 3.1.12

LDAP Abfrage sehr langsam

Post by SimpsonFan »

Erstmal Danke für deine Antwort !

mailLocalAddress gibts wirklich. Da stehen die generischen Mail-Adressen drin.

"uid" durch "sAMAccountName" zu ersetzen wird wohl nix bringen da im LDAP bei uns kein Eintrag existiert der "sAMAccountName" heißt (deswegen ja die uid)

Das auskommentieren von "AdminSetPreferences" hat leider keine Besserung gebracht. Hab den Server auch schon mehrmals neugestartet weil ich gedacht hab das vielleicht eine Art "Cache" vollgelaufen ist aber das brachte leider auch keinen Erfolg
OS: Debian 4.0
OTRS Version: 2.4.9
DB: MySQL
Joyner
Znuny expert
Posts: 185
Joined: 08 Feb 2008, 14:49
Znuny Version: 2.2.8
Location: Berlin

LDAP Abfrage sehr langsam

Post by Joyner »

Die Serverkonfig. (Params) hast du aber sicherlich nur zu Darstellungszwecken mit den Einträgen aus der Doku belassen.

Alles was auskommentiert war, hab ich der Übersicht halber mal rausgenommen...

Code: Select all

    $Self->{CustomerUser} = {
        Name => 'LDAP Datenquelle',
        Module => 'Kernel::System::CustomerUser::LDAP',
        Params => {
            Host => 'ldaps://ldapserver',
            BaseDN => 'ou=users,dc=meinefirma,dc=de',
            SSCOPE => 'sub',
            UserDN => 'uid=user,ou=users,dc=meinefirma,dc=de',
            UserPw => 'geheim',
            AlwaysFilter => '',
        },
Übernimm für den Params-Teil am besten mal die Agenten-Konfig.
Und kommentier den AlwaysFilter mal aus bzw. setz ein * zw. die beiden '.
Produktiv: OTRS 2.4.7, CiCS 3.1.5, Eigenentwicklungen
β-Testing/Mirror: OTRS 2.4.7, ITSM 2.0.2, CiCS(::ITSM) 3.1.5 (2.1.6), Eigenentwicklungen OS: Win2003, XAMPP, Apache2.2/MySQL 5, Trac/SVN
SimpsonFan
Znuny newbie
Posts: 77
Joined: 13 Aug 2009, 13:30
Znuny Version: 3.1.12

LDAP Abfrage sehr langsam

Post by SimpsonFan »

Danke für deine Antwort.

Ich hab AlwaysFilter jetzt mal auskommentiert und die Optionen von Agenten Auth Teil übernommen(also BaseDN usw...). Hab sogar bei den Params von dem Net::LDAP Modul den Port zur Sicherheit mal auf "636" gesetzt. Brachte leider alles keinen Erfolg.

So langsm verzweifle ich noch ....
OS: Debian 4.0
OTRS Version: 2.4.9
DB: MySQL
ferrosti
Znuny superhero
Posts: 723
Joined: 10 Oct 2007, 14:30
Znuny Version: 3.0
Location: Hamburg, Germany

LDAP Abfrage sehr langsam

Post by ferrosti »

Lade Dir mal die Linux LDAP Tools runter und installier sie. Damit konnte ich damals recht brauchbar Fehlerquellen aufdecken.
Hast Du wirklich dem anonymous User Zugriff auf die LDAP Suche gegeben?
openSuSE on ESX
IT-Helpdesk: OTRS 3.0
Customer Service: OTRS 3.0 (upgraded from 2.3)
Customer Service (subsidiary): OTRS 3.0
+additional test and development systems
SimpsonFan
Znuny newbie
Posts: 77
Joined: 13 Aug 2009, 13:30
Znuny Version: 3.1.12

LDAP Abfrage sehr langsam

Post by SimpsonFan »

Da ich den LDAP Server leider nicht selbst betreue kann ich dir nur sagen das die Abfrage über die Linux Shell mittels "ldapsearch -x -LLL uid=blabla" bestens funktioniert. Das mit dem anonymous Zugriff sollte meiner Meinung nach keine Rolle spielen da ich ja 1. einen User angegeben hab (siehe weiter oben die Konfig) und 2. die Abfrage ja funktioniert aber eben extreeem langsam.
OS: Debian 4.0
OTRS Version: 2.4.9
DB: MySQL
ferrosti
Znuny superhero
Posts: 723
Joined: 10 Oct 2007, 14:30
Znuny Version: 3.0
Location: Hamburg, Germany

LDAP Abfrage sehr langsam

Post by ferrosti »

Steht denn etwas in den Linux Messages?
Kann es sein, dass die Abfrage schnell ist, aber der Apache die Seite nicht ausliefert und der Seitenaufbau deswegen so langsam ist? Das Problem hatten wir mal. Ich weiß aber nicht, wie unser Linux Admin das gelöst hat.
openSuSE on ESX
IT-Helpdesk: OTRS 3.0
Customer Service: OTRS 3.0 (upgraded from 2.3)
Customer Service (subsidiary): OTRS 3.0
+additional test and development systems
SimpsonFan
Znuny newbie
Posts: 77
Joined: 13 Aug 2009, 13:30
Znuny Version: 3.1.12

LDAP Abfrage sehr langsam

Post by SimpsonFan »

Tut mir leid wegen meiner späten Antwort !

Ich hab hier mal die OTRS Config die unter /etc/apache2/conf.d liegt

Code: Select all

# --
# added for OTRS (http://otrs.org/)
# --

# agent, admin and customer frontend
ScriptAlias /otrs/ "/opt/otrs/bin/cgi-bin/"
Alias /otrs-web/ "/opt/otrs/var/httpd/htdocs/"

# load all otrs modules
Perlrequire /opt/otrs/scripts/apache2-perl-startup.pl

# Apache::Reload - Reload Perl Modules when Changed on Disk
PerlModule Apache2::Reload
PerlInitHandler Apache2::Reload
PerlModule Apache2::RequestRec

# set mod_perl2 options

<Location /otrs>
#  ErrorDocument 403 /otrs/customer.pl
  ErrorDocument 403 /otrs/index.pl
  ErrorDocument 404 /otrs/index.pl
  SetHandler  perl-script
  PerlResponseHandler ModPerl::Registry
  Options +ExecCGI
  PerlOptions +ParseHeaders
  PerlOptions +SetupEnv
  Order allow,deny
  Allow from all
</Location>

# directory settings
<Directory "/opt/otrs/bin/cgi-bin/">
    AllowOverride None
    Options +ExecCGI -Includes
    Order allow,deny
    Allow from all
</Directory>
<Directory "/opt/otrs/var/httpd/htdocs/">
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

# MaxRequestsPerChild (so no apache child will be to big!)
MaxRequestsPerChild 400
und hier mal die default config aus dem sites-available Ordner

Code: Select all

<VirtualHost *:80>
	ServerAdmin meinemail@mail.com

        RewriteEngine   on
        RewriteCond     %{SERVER_PORT} ^80$
        RewriteRule     ^(.*)$ https://meinserver$1 [L,R]
        RewriteLog      "/var/log/apache2/rewrite.log"
        RewriteLogLevel 2

	
	DocumentRoot /var/www/
	<Directory />
		AddHandler fcgid-script .php
		AddHandler perl-script .pl
	        FCGIWrapper /usr/lib/cgi-bin/php5 .php
		Options FollowSymLinks +ExecCGI
		AllowOverride None
	</Directory>
	<Directory /var/www/>
		Options Indexes FollowSymLinks MultiViews +ExecCGI
		AllowOverride None
		Order allow,deny
		allow from all
	</Directory>

	Alias /phpmyadmin /usr/share/phpmyadmin/
	<Directory /usr/share/phpmyadmin/>
                Options Indexes FollowSymLinks MultiViews +ExecCGI
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

	ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
	<Directory "/usr/lib/cgi-bin">
		AllowOverride None
		Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
		Order allow,deny
		Allow from all
	</Directory>

	ErrorLog /var/log/apache2/error.log

	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn

	CustomLog /var/log/apache2/access.log combined

</VirtualHost>
und hier noch die ssl Datei aus dem sites-available Ordner (es wird mittels rewrite auf die ssl-geschütze Seite weitergeleitet)

Code: Select all

<VirtualHost *:443>
	ServerAdmin meinemail@mail.com
	
	SSLEngine 	On	

	SSLCertificateFile 	/etc/apache2/ssl/usercert.pem	
	SSLCertificateKeyFile	/etc/apache2/ssl/schluesseldatei.pem
	SSLCertificateChainFile	/etc/apache2/ssl/ca-bundle-cert.txt
	
	DocumentRoot /var/www/
	<Directory />
		AddHandler fcgid-script .php
		AddHandler perl-script .pl
	        FCGIWrapper /usr/lib/cgi-bin/php5 .php
		Options FollowSymLinks +ExecCGI
		AllowOverride None
	</Directory>
	<Directory /var/www/>
		Options Indexes FollowSymLinks MultiViews +ExecCGI
		AllowOverride None
		Order allow,deny
		allow from all
	</Directory>

	Alias /phpmyadmin /usr/share/phpmyadmin/
	<Directory /usr/share/phpmyadmin/>
                Options Indexes FollowSymLinks MultiViews +ExecCGI
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

	ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
	<Directory "/usr/lib/cgi-bin">
		AllowOverride None
		Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
		Order allow,deny
		Allow from all
	</Directory>

	ErrorLog /var/log/apache2/error.log

	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn

	CustomLog /var/log/apache2/access.log combined

</VirtualHost>

Vielleicht ist es ja nicht wichtig aber ich setze als webserver den apache worker ein.

Hoffe mir kann jemand helfen :)

Danke :)
OS: Debian 4.0
OTRS Version: 2.4.9
DB: MySQL
ferrosti
Znuny superhero
Posts: 723
Joined: 10 Oct 2007, 14:30
Znuny Version: 3.0
Location: Hamburg, Germany

LDAP Abfrage sehr langsam

Post by ferrosti »

Dann lass den Apache doch mal per DEBUG loggen und schau Dir an, wo der Flaschenhals liegt.
openSuSE on ESX
IT-Helpdesk: OTRS 3.0
Customer Service: OTRS 3.0 (upgraded from 2.3)
Customer Service (subsidiary): OTRS 3.0
+additional test and development systems
SimpsonFan
Znuny newbie
Posts: 77
Joined: 13 Aug 2009, 13:30
Znuny Version: 3.1.12

[gelöst]LDAP Abfrage sehr langsam

Post by SimpsonFan »

So nach einer langen und ausgiebigen Analyse der Log konnte ich leider keine Auffälligkeiten feststellen die auf irgendeinen Flaschenhals hinweisen. Die LDAP Abfrage läuft problemlos durch aber dauert eben sehr lange (ca. 20-30 Sekunden). Am LDAP Server kann es leider auch nicht liegen da ich über die Konsole mit ldapsearch mehrere tausend Einträge ohne Probleme in eine Datei in wenigen Sekunden exportieren kann. Liegt es vielleicht an der Größe des LDAP Servers (ca. 30 000 Einträge ) ??

Gruß
SimpsonFan

edit: Ich hab mal die debug log Datei vom Apache hochgeladen. Interresannt sind meiner Meinung nach die letzen paar Zeilen den alle Zeilen vorher werden alle innerhalb einer Sekunde geschrieben. Meiner Meinung nach liegt ganz unten der Flaschenhals. Durch googlen hab ich leider keine brauchbaren Lösungsansätze bekommen. Vielleicht kennt hier jemand die Lösung ;) Zur Info: Manche Stellen sind bewusst unkenntlich gemacht.


edit:

DIE LÖSUNG !!!!

Ich antworte mal auf meinen eigenen Beitrag um euch die Lösung zu präsentieren ^^ Das Problem lang einzig und allein an einem Stern in der Config.pm

Und zwar der Punkt "CustomerUserSearchSuffix" welcher als Standarf einen Stern beinhaltet, hat dafür gesorgt das bei jedem Buchstaben den man nach der mindest Eingabe das komplette LDAP neu durchsucht hat. Heißt also bei einer Kennung mit 8 Buchstaben das ganze LDAP 6mal durchsucht wurde (2 Zeichen ist die mindesteingabe). Komischerweise hat das früher mal funktioniert aber nun gut ;)

Vielleicht hilft das ganze irgendjemand mal weiter. Danke für eure Hilfe. Ein Super Forum :)
You do not have the required permissions to view the files attached to this post.
OS: Debian 4.0
OTRS Version: 2.4.9
DB: MySQL
Jazz
Znuny newbie
Posts: 28
Joined: 18 Apr 2008, 11:47

[gelöst]LDAP Abfrage sehr langsam

Post by Jazz »

SimpsonFan wrote:DIE LÖSUNG !!!!

Ich antworte mal auf meinen eigenen Beitrag um euch die Lösung zu präsentieren ^^ Das Problem lang einzig und allein an einem Stern in der Config.pm

Und zwar der Punkt "CustomerUserSearchSuffix" welcher als Standarf einen Stern beinhaltet, hat dafür gesorgt das bei jedem Buchstaben den man nach der mindest Eingabe das komplette LDAP neu durchsucht hat. Heißt also bei einer Kennung mit 8 Buchstaben das ganze LDAP 6mal durchsucht wurde (2 Zeichen ist die mindesteingabe). Komischerweise hat das früher mal funktioniert aber nun gut ;)

Vielleicht hilft das ganze irgendjemand mal weiter. Danke für eure Hilfe. Ein Super Forum :)

Ich habe ebenfalls das gleiche Problem, dass die LDAP-Suche sehr lang dauert. Ich habe mal das betreffende Sternchen rausgenommen. Leider hat das bei mir absolut nichts bewirkt. Hast du die ganze Zeile auskommentiert oder ebenfalls nur das Sternchen rausgenommen?


Gruß,
Jazz
Last edited by Jazz on 15 Feb 2010, 15:04, edited 1 time in total.

Live: OTRS 2.4.12, SLES 10, Apache 2.2 + MySQL 5.0
Test: OTRS 3.1.0beta3, SLES 11, Apache 2.2 + MySQL 5.0
SimpsonFan
Znuny newbie
Posts: 77
Joined: 13 Aug 2009, 13:30
Znuny Version: 3.1.12

[gelöst]LDAP Abfrage sehr langsam

Post by SimpsonFan »

Ich habe einfach nur das Sternchen rausgenommen und hatte die Option leergelassen so wie die Option die oben drüber steht (Präfix glaub ich).
OS: Debian 4.0
OTRS Version: 2.4.9
DB: MySQL
Jazz
Znuny newbie
Posts: 28
Joined: 18 Apr 2008, 11:47

[gelöst]LDAP Abfrage sehr langsam

Post by Jazz »

SimpsonFan wrote:Ich habe einfach nur das Sternchen rausgenommen und hatte die Option leergelassen so wie die Option die oben drüber steht (Präfix glaub ich).

Alles klar, danke. Dann wird es bei mir an etwas anderem liegen.
Auch das Auskommentieren der ganzen Zeile bringt nichts.

Live: OTRS 2.4.12, SLES 10, Apache 2.2 + MySQL 5.0
Test: OTRS 3.1.0beta3, SLES 11, Apache 2.2 + MySQL 5.0
Post Reply