Article ID: 260, created on Feb 11, 2009, last review on Dec 1, 2014

  • Applies to:
  • Plesk for Linux/Unix

Kennzeichen

RPM-Pakete werden von Anbietern mit einer zu geringen Anzahl von Datei-Deskriptoren (1024) kompiliert. Dadurch erscheinen möglicherweise die folgenden Nachrichten in /var/log/httpd/error_log:

Segmentation fault (11)

[warn] make_sock: problem listening on port 443, file descriptor (1068) larger than FD_SETSIZE (1024)

Unable to open logs

Too many open files

httpd dead but subsys locked

Dies ist ein weit verbreitetes Problem auf Servern, auf denen zahlreiche virtuelle Hosts konfiguriert sind. Weitere Informationen dazu erhalten Sie unter: http://httpd.apache.org/docs/2.0/misc/descriptors.html.

Lösung

HINWEIS: Ab Plesk 8.2.0 können bis zu 900 Domains auf der Apache-Version des Betriebssystem-Herstellers gehostet werden, ohne dass eine Neukompilierung der Systempakete gemäß Beschreibung in diesem Artikel erforderlich wäre. Wenn das Feature Piped Logs auf dem Plesk Server aktiviert ist, lesen Sie bitte weiter im Artikel Nr. 2066.

HINWEIS: Dieser Artikel bezieht sich auf Linux Betriebssysteme mit einer RPM-Paketstruktur, z. B. RHEL, Fedora, CentOS und SuSE.

Informationen zu Debian-Systemen finden Sie in diesem Artikel.

Informationen zu FreeBSD-Systemen finden Sie in diesem Artikel.

HINWEIS: Parallels Plesk benötigt viele Serveranwendungen, die eigentlich nicht Teil der Plesk Software sind. Zum Beispiel der Apache Webserver, MySQL-Server, das PHP-Modul und PHP-Binärdateien und viele andere Elemente, die nicht von Parallels kompiliert oder bereitgestellt werden. Dennoch werden Standard-RPM-Pakete des jeweiligen Betriebssystemanbieters ohne vorherige Änderungen oder Anpassungen von Plesk eingesetzt. Dadurch können Upgrades und Neukompilierungen dieser Pakete mit den vom Administrator gewünschten Optionen ausgeführt werden. Dieser Artikel bietet Plesk Administratoren eine Hilfestellung beim Konfigurieren ihres Betriebssystems und der nicht im Lieferumfang von Plesk enthaltenen Systempakete, um diese mit einer großen Anzahl gehosteter Domains verwenden zu können.

Dazu müssen zugehörige Anwendungen und Bibliotheken wie openssl, apache, imap, PHP usw. aus den Quell-RPMs mit einem höheren "FD_SETSIZE"-Wert neu kompiliert werden. Gehen Sie nach den folgenden Schritten vor:

Stellen Sie sicher, dass eine ausreichende Anzahl von Dateien auf dem System geöffnet werden kann:

# /sbin/sysctl fs.file-max
fs.file-max = 131072

Wenn der Wert fs.file-max niedrig ist (etwa mehrere Tausend), sollte er durch Hinzufügen der folgenden Zeilen zu /etc/sysctl.conf geändert werden:

fs.file-max = 131072

Rufen Sie anschließend den Shell-Befehl auf:

# /sbin/sysctl -w fs.file-max=131072

HINWEIS: Wenn Sie Parallels Virtuozzo Containers ("PVC") verwenden, sollten Sie den Wert fs.file-max auf dem Hardware Node anpassen. Dadurch wird er auf alle virtuelle Umgebungen angewendet.

Die Pakete glibc-kernheaders und glibc-headers müssen installiert sein. Sie finden diese Pakete auf der Betriebssystem-CD oder auf den Download-Websites Ihres Betriebssystems. Bearbeiten Sie den Wert FD_SETSIZE in den Dateien typesizes.h und posix_types.h. Diese Dateien finden Sie mithilfe des folgenden Befehls:

# find /usr/include/ -name typesizes.h
# find /usr/include/ -name posix_types.h

Stellen Sie den Wert wie folgt ein:

#define __FD_SETSIZE 65536

Laden Sie die folgenden Quell-RPMs herunter, die Sie auf den Download-Websites Ihres Betriebssystems oder ähnlichen Seiten finden. Sie können dazu RPM-Suchmaschinen wie http://rpm.pbone.net oder http://rpmfind.net verwenden:

  • openssl-*.src.rpm
  • httpd-*.src.rpm
  • imap-*.src.rpm
  • php-*.src.rpm
  • libc-client-devel-*.src.rpm (sofern derartiges RPM installiert)
  • curl-*.src.rpm

Kompilieren Sie zunächst openssl neu. Zum Beispiel:

# /usr/bin/rpmbuild --rebuild openssl-0.9.7a-35.src.rpm

Installieren Sie das kompilierte openssl-RPM mit folgender Befehlszeile:

# rpm -Uvh --force /usr/src/redhat/RPMS/i386/openssl-0.9.7a-35.i386.rpm

Wiederholen Sie diesen Vorgang für cURL.

Rekompilieren und installieren Sie apache:

# rpmbuild --rebuild httpd-2.0.51-2.9.src.rpm
# rpm -Uvh --force /usr/src/redhat/RPMS/i386/httpd-2.0.51-2.9.i386.rpm
# rpm -Uvh --force /usr/src/redhat/RPMS/i386/httpd-devel-2.0.51-2.9.i386.rpm
# rpm -Uvh --force /usr/src/redhat/RPMS/i386/mod_ssl-2.0.51-2.9.i386.rpm

Rekompilieren und installieren Sie die Bibliothek libc-client, die im Paket imap oder libc-client-devel (je nach OS) bereitgestellt wird. Sie müssen die Bibliothek neu kompilieren, die bereits auf dem System installiert ist. Zum Beispiel:

# /usr/bin/rpmbuild --rebuild imap-2002d-3.src.rpm
# rpm -Uvh --force /usr/src/redhat/RPMS/i386/imap-devel-2002d-3.i386.rpm

oder:

# /usr/bin/rpmbuild --rebuild libc-client-devel.src.rpm
# rpm -Uvh --force /usr/src/redhat/RPMS/i386/libc-client-devel.rpm

Rekompilieren und installieren Sie PHP. Zum Beispiel:

# rpmbuild --rebuild php-4.3.10-2.4.src.rpm
# rpm -Uvh --force /usr/src/redhat/RPMS/i386/php-*

Fügen Sie den Befehl ulimit -n 65536 zu den Apache-Startskripten /etc/rc.d/init.d/httpd und /usr/sbin/apachectl als ersten Befehl hinzu.

Ersetzen Sie /usr/sbin/suexec mit einer Plesk Datei:

# cp /usr/local/psa/suexec/psa-suexec /usr/sbin/suexec
# /etc/init.d/httpd restart

Verwenden Sie folgende Befehle für Plesk Versionen unter 7.5:

# cp /usr/local/psa/suexec/psa-suexec /usr/sbin/suexec
# chown root:apache /usr/sbin/suexec
# chmod 4510 /usr/sbin/suexec
# /etc/init.d/httpd restart

a914db3fdc7a53ddcfd1b2db8f5a1b9c 56797cefb1efc9130f7c48a7d1db0f0c 29d1e90fd304f01e6420fbe60f66f838

Email subscription for changes to this article
Save as PDF