Article ID: 260, created on Jan 21, 2009, last review on May 10, 2014

  • Applies to:
  • Plesk for Linux/Unix

Symptômes

Les packs RPM sont compilés par les vendeurs avec un nombre trop petit (1024) de descripteurs de fichiers et cela risque d'entraîner les messages suivants qui s'afficheront dans /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

Il s'agit du problème commun d'Apache sur les serveurs avec de nombreux hôtes virtuels configurés. Pour en savoir plus, voir
http://httpd.apache.org/docs/2.0/misc/descriptors.html.

Résolution

REMARQUE : Depuis Parallels Plesk Panel 8.2.0, 900 domains max peuvent être hébergés dans le build du vendeur d'OS Apache sans la recompilation des packs de système décrite dans cet article si la fonction Piped Logs (Logs pipés) est activé sur le serveur Parallels Plesk Panel,  voir 2066.

REMARQUE : Cet article est destiné aux systèmes d'exploitation Linux qui ont une structure de packs RPM comme RHEL, Fedora, CentOS, SUsE.
Pour avoir de plus amples détails sur le système Debian, veuillez suivre
cet article.
Pour avoir de plus amples détails sur le système FreeBSD, veuillez suivre
cet article.


REMARQUE : Parallels Plesk Panel exige, dépend étroitement de et utilise plusieurs applications de serveurs qui ne font pas partie du logiciel Parallels Plesk Panel. Par exemple, le serveur Web  Apache, le serveur mysql, le module php et les binaires ainsi que beaucoup d'autres ne sont ni compilés par Parallels ni fournis par Parallels mais les packs RPM système standards du vendeur d'OS sont utilisés par Parallels Plesk Panel et utilisés 'tels quels'. Cela permet de mettre à niveau et de recompiler de tels packs avec les options que l'administrateur souhaite. Cet article est écrit pour aider les administrateurs de Parallels Plesk Panel à configurer leur OS et leurs packs systèmes qui ne sont pas compris dans la distribution de Parallels Plesk Panel pour qu'ils fonctionnent avec un plus grand nombre de domaines hébergés.

Vous devez recompiler les bibliothèques et applications concernées, telles qu'openssl, apache, imap, PHP etc à partir des RPM sources avec une valeur FD_SETSIZE plus élevée. Veuillez suivre les étapes suivantes.

Assurez-vous que le système permette d'ouvrir assez de fichiers :
# /sbin/sysctl fs.file-max
fs.file-max = 131072

Si fs.file-max est assez petit (plusieurs milliers environ), il doit être changé en ajoutant les lignes suivantes dans /etc/sysctl.conf :

fs.file-max = 131072

et en exécutant la commande de shell :
# /sbin/sysctl -w fs.file-max=131072

REMARQUE : si vous exécutez Virtuozzo, vous devez ajuster fs.file-max sur le hardware node et il s'appliquera à tous les VE.

Vous devez avoir  glibc-kernheaders et glibc-headers d'installés, ils peuvent être installés à partir du CD distributeur de l'OS ou des sites de téléchargement de l'OS. Editez la valeur __FD_SETSIZE dans les fichiers typesizes.h et  posix_types.h qui peuvent être trouvés avec:
# find /usr/include/ -name typesizes.h
# find /usr/include/ -name posix_types.h

et configurez-la comme ceci :

#define __FD_SETSIZE 65536

Téléchargez les RPM sources qui peuvent être trouvés sur les sites de téléchargement de votre OS ou emplacements similaires, vous devez utiliser les moteurs de recherche RPM tels que rpm.pbone.net
ou rpmfind.net :

openssl-*.src.rpm
httpd-*.src.rpm
imap-*.src.rpm
php-*.src.rpm
libc-client-devel-*.src.rpm (if such RPM is installed)
curl-*.src.rpm

Recompilez tout d'abord openssl. Par exemple :
# /usr/bin/rpmbuild --rebuild openssl-0.9.7a-35.src.rpm

Installez le RPM compilé openssl avec la ligne de commande suivante :
# rpm -Uvh --force /usr/src/redhat/RPMS/i386/openssl-0.9.7a-35.i386.rpm

Répétez les mêmes actions pour cURL.

Recompilez et installez 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

Recompilez et installez la bibliothèque libc-client qui est fournie par les packs imap ou libc-client-devel (en fonction de l'OS) . Vous devez en recompiler une qui est installée dans le système, par exemple :
# /usr/bin/rpmbuild --rebuild imap-2002d-3.src.rpm
# rpm -Uvh --force /usr/src/redhat/RPMS/i386/imap-devel-2002d-3.i386.rpm

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

Recompilez et installez PHP, par exemple :
# rpmbuild --rebuild php-4.3.10-2.4.src.rpm
# rpm -Uvh --force /usr/src/redhat/RPMS/i386/php-*

Ajoutez la commande `ulimit -n 65536` dans les scripts de démarrage apache /etc/rc.d/init.d/httpd et /usr/sbin/apachectl avant les autres commandes.

Remplacez /usr/sbin/suexec par celle de Parallels Plesk Panel :
# 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

A partir de Parallels Plesk Panel 7.5 :
# cp /usr/local/psa/suexec/psa-suexec /usr/sbin/suexec
# /etc/init.d/httpd restart

a914db3fdc7a53ddcfd1b2db8f5a1b9c 56797cefb1efc9130f7c48a7d1db0f0c 29d1e90fd304f01e6420fbe60f66f838

Email subscription for changes to this article
Save as PDF