Antworten auf häufige Fragen und Probleme

Hier finden Sie Antworten auf Fragen und Probleme, die bei der Installation und während dem Betrieb von ITEMS auftreten können.

//Installation/Upgrade

Was passiert, wenn meine Sitzung mit dem Server während der Installation bzw. dem Upgrade geschlossen wurde?

Die Installation läuft ganz normal weiter, bis das Installations-Programm eine Eingabe von Ihnen benötigt. Sobald das der Fall ist, wird die Installation beendet.

Wurde also die Verbindung während einem Online-Datenbank-Upgrade getrennt, läuft das Upgrade auf dem Server weiter, die Installation wird aber beendet, sobald Sie aufgefordert werden, zu bestätigen, dass ITEMS offline genommen wird. ITEMS läuft also produktiv ohne Beeinträchtigung weiter, bis Sie das Upgrade erneut starten.

Wurde die Verbindung während dem Offline-Teil getrennt oder wenn kein Datenbank-Upgrade durchgeführt werden muss, dann ist auch keine Eingabe notwendig. Somit läuft die Installation bis zum Ende.

Wenn Sie die Ausgaben des Installationsprogramms sehen möchten, verbinden Sie sich einfach wieder mit dem Server, und zeigen Sie die Datei items-install.XXXXXXXXXX an, die in dem Verzeichnis liegt, in dem Sie die Installation gestartet haben. Die Buchstaben "X" stehen für zufällige Buchstaben oder Zahlen.

Um also den genauen Namen der Datei zu finden, geben Sie ein:

ls -l --sort=time items-install.??????????

Die Datei in der obersten Zeile ist dabei die Ausgabe der letzten Installation.

Kann ich die Installation abbrechen?

Sie können die Installation bzw. das Upgrade jederzeit abbrechen, indem Sie Strg+C drücken.

Ein bereits gestartetes Online-Upgrade wird dann allerdings im Hintergrund weiter laufen. Um dieses abzubrechen, gehen Sie wie unter Die Last auf dem ITEMS-Datenbank-Server ist ungewöhnlich hoch beschrieben vor, aber brechen Sie die Transaktion ab, in der das Upgrade läuft.

Ich habe die Installation abgebrochen. Was nun?

Sie können die Installation bzw. das Upgrade immer erneut starten, egal welches Problem aufgetreten ist.

Haben Sie die Installation z.B. manuell abgebrochen, starten Sie sie einfach erneut. Ein Online-Upgrade wird dann nur die Teile ausführen, die noch nicht bereits gelaufen sind.

Das Verhalten ist also immer so, als ob Sie die Installation nicht abgebrochen hätten.

Wie kann ich prüfen, ob die Installation noch läuft?

Wenn Sie unsicher sind, ob die Installation bereits abgeschlossen ist oder eventuell noch läuft, können Sie folgendermaßen vorgehen:

Gibt ps ax | grep install einen Prozess aus, und ist dies der Installations-Prozess, so läuft die Installation noch. Bitte starten Sie die Installation dann nicht erneut, sondern warten Sie, bis die laufende Installation beendet ist.

Ich bekomme eine Menge Fehlermeldungen mit "NoClassDefFoundError: Could not initialize class"

Hierbei scheint es sich um einen Bug in Tomcat zu handeln, der nur bei manchen Installationen auftritt. Um das Problem zu beseitigen, sollten Sie Tomcat komplett deinstallieren und anschließend von neuem installieren.

Um ITEMS dennoch sofort in Betrieb nehmen zu können, müssen Sie die extrahierten Dateien löschen. Dazu geben Sie als root angemeldet (ohne Tomcat zu stoppen/starten!) rm -rf /var/lib/tomcat*/webapps/items (Debian) bzw. rm -rf /srv/tomcat6/webapps/items (SuSE Linux) ein.

Wenn Sie Tomcat neu starten oder eine neue Version von ITEMS installieren, tritt das Problem erneut auf. In diesem Fall können Sie wieder den oben angegebenen Befehl ausführen.

//Konfiguration

Wie kann ich ITEMS so konfigurieren, dass sich nur ausgewählte Benutzer anmelden können?

Dafür gibt es mehrere Möglichkeiten:

  • Wenn Sie nur Anmeldungen für Personen, die Mitglied einer Sicherheitsgruppe sind, zulassen wollen, und ohnehin schon JAAS für die Anmeldung benutzen, dann können Sie das JAAS-LoginModule GroupMemberLoginModule verwenden.

    Wenn gewünscht, können Sie als Parameter einen Gruppennamen angeben. Die Mitglieder aller Gruppen, die diesen Namen haben, können sich dann anmelden. Geben Sie keinen Namen an, so können sich alle Personen, die Mitglied in irgendeiner Gruppe sind, anmelden.

    Um die Anmeldung für alle Benutzer zuzulassen, die Mitglied in der Gruppe "Anmeldung erlaubt" sind, gehen Sie folgendermaßen vor:

    Administration -> Management-Dienst -> Oberflächen-Cluster
    Gewünschten Cluster auswählen
    Unter "Anmeldekonfiguration" die Zeile "Anmeldung über externen Anmeldeservice" bearbeiten
    Als erste Zeile im Feld "JAAS-Konfiguration" folgendes einfügen:
                            impl.backend.services.security.groups.GroupMemberLoginModule required
                              groupName="Anmeldung erlaubt";
                          
  • Wenn Sie gegen einen LDAP-Server authentifizieren, können Sie einen Zweig erstellen, der nur die gewünschten Personen enthält. Anschließend geben Sie den Pfad für diesen Zweig in der Konfiguration des entsprechenden Clusters an:
    Administration -> Management-Dienst -> Oberflächen-Cluster
    Gewünschten Cluster auswählen
    Unter "Anmeldekonfiguration" die Zeile "Anmeldung über externen Anmeldeservice" bearbeiten
    In der Zeile mit jndi.java.naming.provider.url den Pfad entsprechend eintragen, z.B. "ldap://localhost/ou=restricted,ou=persons,dc=hostname"
Wie kann ich ITEMS für maximale Redundanz konfigurieren?

Aus Sicht der Hardware:

Wenn Sie ITEMS auf einem virtuellen Server betreiben, kann bei Ausfall des Hosts der Guest automatisch auf einen anderen Host umziehen.

Die Anbindung der Hosts an das SAN sollte redundant erfolgen, und wenn das SAN wiederum über redundante Server mit Spiegelung betrieben wird, ist auch hier die gewünschte Redundanz erreicht.

Ebenso sollte natürlich die Stromversorgung mittels USV abgesichert sein, und die Anbindung der Hosts an das LAN sollte natürlich auch redundant erfolgen.

Aus Sicht der Software:

Sie sollten mehrere LDAP-Server für Authentifizierung und Verzeichnisdienste bereitstellen, die alle unter demselben Hostnamen konfiguriert sind. Eine Umschaltung erfolgt dann automatisch, wenn einer der Server ausfällt.

Üblicherweise wird Ihr DNS-Cluster genauso konfiguriert sein, dass an mehreren Standorten mehrere DNS-Server unter demselben Hostnamen erreichbar sind. Auch hier erfolgt die Umschaltung dann automatisch.

Wenn Sie mehrere SMTP-Server zur Verfügung stellen, sollten Sie diese dem ITEMS-Server bekannt machen. Wird als MTA auf dem ITEMS-Server beispielsweise Postfix verwendet, dann sollten Sie sowohl relayhost als auch smtp_fallback_relay setzen.

//Probleme im Betrieb

Meldung "Clock skew too great" bei Anmeldung

Haben Sie ITEMS so konfiguriert, dass ein externer Anmeldeservice verwendet wird, erscheint diese Meldung nach Eingabe eines Benutzernamens und Kennworts, wenn sich Datum und Uhrzeit des Servers, auf dem das ITEMS-Backend läuft, und des Servers, auf dem der Anmeldeservice läuft, zu stark unterscheiden.

  • Bitte prüfen Sie Datum und Uhrzeit auf beiden Servern (geben Sie man 1 date am Prompt ein).
  • Bitte verwenden Sie ein Programm zur Synchronisation der Uhrzeit, z.B. ntpdate.
Die Last auf dem ITEMS-Datenbank-Server ist ungewöhnlich hoch

Bitte prüfen Sie zunächst, ob es sich um ungewöhnlich lange laufende Abfragen handelt, oder um ungewöhnlich viele Zugriffe.

Dazu starten Sie psql mit einem Superuser-Account, z.B. folgendermaßen:

                  su postgres
                  PAGER="less -S" psql items3
                

Anschließend können Sie sich die gerade laufenden Abfragen anzeigen lassen, indem Sie folgendes eingeben:

                  SELECT procpid, query_start, current_query
                  FROM pg_stat_activity
                  WHERE current_query != '<IDLE>';
                

In der Spalte query_start wird der Startzeitpunkt der Abfrage angezeigt. Liegt dieser länger als wenige Minuten zurück, so ist das vermutlich der Auslöser. Bitte leiten Sie die Ausgabe in der Spalte current_query an Factor3 weiter, möglichst unter Angabe, was genau auf der Oberfläche gemacht wurde, um diese Abfrage auszulösen.

Anschließend können Sie die Abfrage beenden, indem Sie folgendes eingeben:

                  SELECT pg_cancel_backend(procpid);
                

wobei Sie procpid durch den Wert in selbiger Spalte in der vorher ausgegebenen Tabelle ersetzen müssen.

Um alle Abfragen zu beenden, die länger als 30 Minuten laufen, können Sie folgendes eingeben - beachten Sie aber bitte, dass sämtliche Abfragen beendet werden, ohne irgendeine Prüfung!

                  SELECT pg_cancel_backend(procpid)
                  FROM pg_stat_activity
                  WHERE current_query != '<IDLE>' AND
                    query_start <= current_timestamp - interval '30 minutes';
                

Sollte keine lange laufende Abfrage zu finden sein, so werden vermutlich ungewöhnlich viele Zugriffe an den ITEMS-Server abgesetzt. Am einfachsten können Sie dies prüfen, indem Sie die Datei /var/log/apache2/access.log auswerten.

Apache Tomcat oder der ITEMS-Server verbrauchen ungewöhnlich viel CPU-Zeit bzw. reagieren nicht mehr

Prinzipiell kann es zwei Ursachen für eine ungewöhnlich hohe CPU-Last geben:

  1. ein Thread, der mit einer langen Berechnung beschäftigt ist oder gar in einer Endlosschleife läuft,
  2. oder viele gleichzeitige Zugriffe, die einen unoptimierten Code-Pfad durchlaufen.

Selbstverständlich sollte dies im Betrieb nicht auftreten, und Probleme dieser Art werden von uns umgehend beseitigt, sobald wir die genaue Ursache kennen. Dazu sind wir aber auf Ihre Mithilfe angewiesen.

Um zunächst festzustellen, welche Threads gerade mit welchem Code beschäftigt sind, gehen Sie bitte folgendermaßen vor:

Loggen Sie sich auf dem Server (z.B. mittels ssh) ein, und führen Sie als root folgendes aus:

                  jps -l
                

Es sollte eine Ausgabe erscheinen wie:

                  22851 /opt/items/lib/items-server.jar
                  22979
                  8459 sun.tools.jps.Jps
                

Die Zeile, in der sun.tools.jps.Jps selbst genannt wird, ist irrelevant. Die Zeile mit items-server.jar ist das ITEMS-Backend. In diesem Beispiel läuft auf dem Server sowohl das Backend als auch ein Tomcat, was der Prozess ohne weitere Angabe ist - bei Ihrer Installation ist möglicherweise etwas angegeben.

Wählen Sie nun die Zahl neben dem Prozess aus, der Probleme bereitet - für das ITEMS-Backend im Beispiel also 22851, für Tomcat 22979.

Nun können Sie

                  jstack -F 22979 > stacktrace.txt
                

ausführen, wobei Sie als Zahl die vorher festgestellte Zahl eintragen. Anschließend übermitteln Sie bitte die Datei stacktrace.txt an uns.

Sollte unsere Analyse der Datei ergeben, dass kein Thread mit einer ungewöhnlichen langen Berechnung beschäftigt ist, muss es sich also um Ursache 2 handeln.

In diesem Fall werden wir die Anwendung bei Ihnen zu einer Zeit, in der das Problem üblicherweise auftritt, mit einem Profile überwachen. Üblicherweise kommt dafür VisualVM (jvisualvm) zum Einsatz.

Fehlermeldungen mit "localhost:389"

Wenn Sie Fehlermeldungen von ITEMS bekommen (z.B. als Email oder im Fehler-Protokoll), die "hostname:389" (z.B. localhost:389) beinhalten, handelt es sich um Probleme mit dem LDAP-Server. Die tatsächlichen Fehlermeldungen des LDAP-Servers finden Sie in /var/log/syslog bzw. in /var/log/messages (SuSE-Linux).

Wenn Sie OpenLDAP als LDAP-Server verwenden, können Sie diesen neu starten. Dazu melden Sie sich als Benutzer root auf dem Server an, auf dem OpenLDAP läuft, und geben folgendes ein:

  • Übliche Linux-Distributionen: /etc/init.d/slapd restart
  • SuSE-Linux: /etc/init.d/ldap restart

//Administration

Startreihenfolge aller Dienste, Neustart von ITEMS

Grundsätzlich können Sie alle Dienste in beliebiger Reihenfolge starten - die ITEMS-Oberfläche erkennt selbständig, sobald ein ITEMS-Backend zur Verfügung steht, und das ITEMS-Backend stellt selbständig Verbindungen zur Datenbank her, sobald dies möglich ist.

Damit ITEMS aber sofort einsatzbereit ist, sollten Sie die Dienste in folgender Reihenfolge starten:

  • Datenbank-Server (z.B. /etc/init.d/postgresql start)
  • ITEMS-Backend (z.B. /etc/init.d/items start)
  • ITEMS-Oberfläche (z.B. /etc/init.d/tomcat* start)

Möchten Sie ITEMS neu starten, so können Sie die Dienste in umgekehrter Reihenfolge zunächst beenden, um sie dann wie oben beschrieben neu zu starten:

  • ITEMS-Oberfläche (z.B. /etc/init.d/tomcat* stop)
  • ITEMS-Backend (z.B. /etc/init.d/items stop)
  • Datenbank-Server (z.B. /etc/init.d/postgresql stop)