Plattform-spezifische Anmerkungen Ein Hochleistungs-Webserver auf HPUX
Date: Wed, 05 Nov 1997 16:59:34 -0800
From: Rick Jones <raj@cup.hp.com>
Reply-To: raj@cup.hp.com
Organization: Network Performance
Subject: HP-UX tuning tips

Tuning-Tipps für HP-UX für die Tuning-Seite.

Für HP-UX 9.X: Upgrade auf 10.20
Für HP-UX 10.[00|01|10]: Upgrade auf 10.20

Für HP-UX 10.20:

Installieren Sie den aktuellsten ARPA-Transport-Patch. Das erlaubt Ihnen die Konfiguration der Größe der der Hash-Tabelle für die Suchenach TCP-Verbindungen. Die Voreinstellung sind 256 Buckets und muss um das zweifache größer sein. Dies geschieht mit adb für das *disc*-Iimage des Kernel. Der Variablenname ist tcp_hash_size. Beachten Sie, dass es äußerst wichtig ist, dass Sie W zum Schreiben eines 32-Bit-Wertes und nicht w zum Schreiben eines 16-Bit-Wertes nehmen, wenn Sie den Patch für das Platten-Image vornehmen, weil die Variable tcp_hash_size ein 32-Bit-Wert ist.

Wie wird der Wert gewählt? Untersuchen Sie die Ausgabe des Skripts ftp://ftp.cup.hp.com/dist/networking/tools/connhist und stellen Sie fest, wie viele TCP-Verbindungen Ihr System insgesamt hat. Wahrscheinlich sollten Sie diese Anzahl durch die Größe der Hash-Tabelle dividieren, damit sie einigermaßen kein ist (kleiner als 10). Einige allgemeine Einstellungen finden Sie in den SPECweb96-Angaben für HP unter der Adresse http://www.specbench.org/. Schafft ein HP-UX-System 1000 SPECweb96-Verbindungen pro Sekunde, dann bedeutet die TIME_WAIT-Zeit von 60 Sekunden, dass 60.000 TCP-"Verbindungen" vorliegen.

Die Größe der Warteschlange kann mit ftp://ftp.cup.hp.com/dist/networking/misc/listenq ermittelt werden.

Wird der Apache auf einem PA-8000 basierten System ausgeführt, sollte davon ausgegangen werden, das der Befehl chatr() für den Apache eine große Seitengröße liefert (chatr +pi L <BINARY>). Die GID des ausgeführten Programms muss MLOCK-Rechte haben. Für die Zuweisung von MLOCK sollte Setprivgrp(1m) zu Rate gezogen werden. Die Änderung kann durch Ausführen von Glance und Untersuchung der Speicherbereiche des (der) Server überprüft werden, um sicherzustellen, dass sie einen nicht trivialen Anteil des Textsegments anzeigen, der gesperrt wird.

Wird der Apache auf MP-Systemen ausgeführt, kann in Betracht gezogen werden, ein kleines Programm zu schreiben, das mpctl() verwendet, um Prozesse an Prozessoren zu binden. Ein einfacher pid % numcpu-Algorithmus reicht wahrscheinlich aus. Der Code kann auch in den Quellcode übernommen werden.

Hat jemand Bedenken hinsichtlich der Anzahl der FIN_WAIT_2-Verbindungen, kann mit nettune der Wert von tcp_keepstart reduziert werden. Dabei ist jedoch Vorsicht geboten, er darf mit Gewisshheit nicht niedriger als 2 bis 4 Minuten sein. Wurde tcp_hash_size richtig gesetzt, dann ist es wahrscheinlich in Ordnung, die Timeouts für FIN_WAIT_2 höher zu setzen (vielleicht sogar auf die Vorgabe von 2 Stundne) - sie werden im Durchschnitt keine große Auswirkung auf die Performance haben.

Es gibt noch weitere Dinge, die in die Codebasis übernommen werden könnten, was jedoch Gegenstand einer weiteren E-Mail-Nachricht sein soll. Wer interessiert ist, kann mir eine Nachricht schicken.

Mit freundlichen Grüßen

rick jones

http://www.cup.hp.com/netperf/NetperfPage.html