Limite du nombre fichiers ouverts ("Too many open files")

Bonjour,

Suite à la résolution de mon segfault sous Apache2, j’ai maintenant droit au message d’erreur suivant dans les logs Apache2 :

Après quelques recherche sur le net, j’ai trouvé les infos suivantes mais sans succès :

-> 762638

J’ai également essayer d’ajouter “ulimit -n 8000” dans mon fichier /etc/init.d/apache2

Si je fais un “lsof”, j’obtient un fichier de 12 000 lignes environ, avec une centaine de ligne par process Apache2, et 11 500 lignes de Apache2 en tout.

Une idée de comment résoudre ce problème ?

Merci d’avance

Je sais pas si t’as lu la fin de ton précédent topic mais je considère pas ton ancien problème résolu. Tu risque même d’avoir de nouveau problème d’ici peu si tu ne remet pas un peu d’ordre dans le système.

Ton nouveau problème :
Tu as une version de libc6 et toutes ses dépendances basée sur lenny. Or le reste de ton système est en etch (à part apache2-mpm-prefork et ses dépendances évidemment).
Pour confirmer donne le résultat de :

et

Avant de continuer à bidouiller, il te faut passer par un upgrade total en lenny (mis a part le noyau).
Pour ça donne ton /etc/apt/sources.list et aussi le /etc/apt/preferences si il y en a un. Une fois que quelqu’un ici aura validé ces deux fichiers tu pourra tenter un

et un

Le -s et important, poste le resulat de cette dernière commande et on verra par la suite si tu peux envisager de vraiment faire le dist-upgrade.

Enfin, as tu une sauvegarde de tout tes fichiers de conf du serveur et eventuellement des données ? Y a t-il d’autres services majeurs comme apache d’utilisés sur ce serveur ? Lesquels ?

Ton problème de libc6 vient du fait qu’on s’est mal compris sur mon ancien post et surtout que tu t’es précipité a faire des choses sans demander la moindre confirmation ou suggestion. Evite de refaire ce genre de chose, je voudrais pas me sentir responsable si il t’arrive un malheur avec ton serveur :unamused:

Bonjour SpaTule et encore merci pour ta patience !

J’ai considéré mon problème précédent résolu puisque je partait d’une erreur inconnue (Segmentation fault) vers quelque chose d’a priori plus simple à réssoudre puisque identifié.

Voici ce que retourne les commandes indiquée :

# dpkg -l | grep libc6 ii libc6 2.7-18 GNU C Library: Shared libraries ii libc6-dev 2.7-18 GNU C Library: Development Libraries and Hea ii libc6-i386 2.7-18 GNU C Library: 32bit shared libraries for AM

# apt-cache policy libc6 libc6: Installé : 2.7-18 Candidat : 2.7-18 Table de version : *** 2.7-18 0 500 http://ftp.fr.debian.org stable/main Packages 100 /var/lib/dpkg/status 2.3.6.ds1-13etch9 0 500 http://mir1.ovh.net etch/main Packages

[code]# cat /etc/apt/sources.list
deb http://mir1.ovh.net/debian/ etch main
deb-src http://mir1.ovh.net/debian/ etch main

deb http://security.debian.org/ etch/updates main contrib
deb-src http://security.debian.org/ etch/updates main contrib

deb http://ftp.fr.debian.org/debian/ stable main[/code]
pas de /etc/apt/preferences

J’ai des backups des fichiers et des données. Comme autre service il y a principalement un serveur mysql.

Merci !

Salut,

C’est un peu incohérent tout cela.

  1. ftp.fr.debian.org/debian/ stable main
    Afin d’éviter les mauvaises surprises, à fortiori sur un serveur en prod, on préfèrera utiliser le nom de code d’une branche soit pour stable -> lenny
    De même si tu es chez OVH d’utiliser leurs serveurs (mais là c’est toi qui vois), soit :

deb http://mir1.ovh.net/debian/ lenny main deb-src http://mir1.ovh.net/debian/ lenny main

  1. Il n’y a pas les dépôts security correspondants :

deb http://security.debian.org/ lenny/updates main deb-src http://security.debian.org/ lenny/updates main

  1. deb security.debian.org/ etch/updates main contrib
    deb-src security.debian.org/ etch/updates main contrib

Utiliser les dépôt contrib security est inutile si tu n’utilises pas le dépôt contrib « normal ».

Tu as donc maintenant une installation bâtarde etch/lenny cela me parai très difficile de rester en l’état. Une mise à niveau vers Lenny me semble donc inévitable.

C’est bien ce que je pensais et va falloir remettre un peu d’ordre :confused:

Je t’avais pourtant bien préciser la dernière fois de ne pas rajouter les dépôts stable sans passer par un fichier préférences. De plus il te manque les dépôts security qui sont toujours en etch donc évite de lancer un upgrade total avec cette config… D’ailleurs, vérifie qu’il n’y a pas une cron qui lancerait éventuellement des upgrade auto sur le serveur.

Affiche le résultat de:

et donne la liste des noms de script contenus dans les répertoires /etc/cron.daily/, weekly, etc…
ex :

je pense pas que tu ai anacron…

Il te faut ensuite remplacer tout ton sources.list par ceci :

[code]deb http://mir1.ovh.net/debian/ lenny main contrib
deb-src http://mir1.ovh.net/debian/ lenny main contrib

deb http://security.debian.org/ lenny/updates main contrib
deb-src http://security.debian.org/ lenny/updates main contrib[/code]

Avec ce sources.list pas nécessaire de créer un fichier /etc/apt/preferences.

Puis faire un :

et

Et copie nous ce que tout ça raconte

[edit] overgrilled je fume comme une merguez oubliée sur un BBQ… cést ca de faire autre chose tout en postant…

Pas de crontab liés à apt dans le crontab -l.

[code]# ls -l /etc/cron.*/
/etc/cron.d/:
total 8
-rw-r–r-- 1 root root 200 2008-12-03 10:28 awstats
-rw-r–r-- 1 root root 2322 2009-03-10 15:21 sendmail

/etc/cron.daily/:
total 44
-rwxr-xr-x 1 root root 633 2009-01-21 01:14 apache2
-rwxr-xr-x 1 root root 5041 2007-02-26 22:53 apt
-rwxr-xr-x 1 root root 314 2007-03-14 15:46 aptitude
-rwxr-xr-x 1 root root 502 2007-01-02 18:34 bsdmainutils
-rwxr-xr-x 1 root root 419 2006-08-06 10:38 find
-rwxr-xr-x 1 root root 89 2006-04-09 00:37 logrotate
-rwxr-xr-x 1 root root 946 2007-01-29 13:20 man-db
-rwxr-xr-x 1 root root 3285 2006-12-09 05:52 sendmail
-rwxr-xr-x 1 root root 3283 2006-12-20 01:20 standard
-rwxr-xr-x 1 root root 1307 2006-05-25 11:51 sysklogd

/etc/cron.hourly/:
total 0

/etc/cron.monthly/:
total 8
-rwxr-xr-x 1 root root 529 2008-11-04 15:55 proftpd
-rwxr-xr-x 1 root root 129 2006-12-20 01:20 standard

/etc/cron.weekly/:
total 8
-rwxr-xr-x 1 root root 520 2007-01-29 13:20 man-db
-rwxr-xr-x 1 root root 1092 2006-05-25 11:51 sysklogd[/code]
Le script aptitude ne fait pas de mise à jour.

J’ai modifié mon sources.list en remplaçant tout par les lignes indiqués dans le message précédent puis fait un aptitude update qui me signale que W: There is no public key available for the following key IDs:4D270D06F42584E6

Ensuite voila ce que me donne aptitude -s dist-upgrade

[code]# aptitude -s dist-upgrade
Lecture des listes de paquets… Fait
Construction de l’arbre des dépendances… Fait
Lecture de l’information d’état étendu
Initialisation de l’état des paquets… Fait
Lecture des descriptions de tâches… Fait
Construction de la base de données des étiquettes… Fait
Les paquets suivants sont CASSÉS :
libsasl2 libssp0
Les paquets suivants ne sont pas utilisés et vont être ENLEVÉS :
python2.4 python2.4-minimal
Les NOUVEAUX paquets suivants vont être automatiquement installés :
bind9utils cpp-4.3 gcc-4.3 libbind9-40 libcap2 libcwidget3 libdb4.5 libdevmapper1.02.1 libdns45 libept0 libglib2.0-0
libglib2.0-data libgmp3c2 libgomp1 libgpm2 libgssglue1 libisc45 libisccc40 libisccfg40 liblwres40 libmpfr1ldbl libpci3
libpthread-stubs0 libpthread-stubs0-dev libssh2-1 libustr-1.0-1 libxapian15 libxcb-xlib0 libxcb-xlib0-dev libxcb1 libxcb1-dev
lynx-cur lzma netcat-traditional proftpd-basic proftpd-mod-ldap proftpd-mod-mysql proftpd-mod-pgsql python-sepolgen python2.5
python2.5-minimal ttf-dejavu-core ttf-dejavu-extra
Les paquets suivants seront automatiquement ENLEVÉS :
libpci2
Les NOUVEAUX paquets suivants vont être installés :
bind9utils cpp-4.3 gcc-4.3 libbind9-40 libcap2 libcwidget3 libdb4.5 libdevmapper1.02.1 libdns45 libept0 libglib2.0-0
libglib2.0-data libgmp3c2 libgomp1 libgpm2 libgssglue1 libisc45 libisccc40 libisccfg40 liblwres40 libmpfr1ldbl libpci3
libpthread-stubs0 libpthread-stubs0-dev libssh2-1 libustr-1.0-1 libxapian15 libxcb-xlib0 libxcb-xlib0-dev libxcb1 libxcb1-dev
lynx-cur lzma netcat-traditional proftpd-basic proftpd-mod-ldap proftpd-mod-mysql proftpd-mod-pgsql python-sepolgen python2.5
python2.5-minimal ttf-dejavu-core ttf-dejavu-extra
Les paquets suivants seront ENLEVÉS :
libpci2
Les paquets suivants seront mis à jour :
acpid adduser apache2 apt apt-utils aptitude autotools-dev awstats base-files base-passwd bash bc bind9 bind9-doc bind9-host
bsdmainutils bsdutils busybox bzip2 ca-certificates console-common console-data console-tools coreutils cpio cpp cpp-4.1 cron
curl dc debconf debconf-i18n debian-archive-keyring debianutils defoma dhcp3-client dhcp3-common dictionaries-common diff
dmidecode dnsutils doc-debian doc-linux-text dpkg dselect e2fslibs e2fsprogs ed eject file findutils finger ftp gcc gcc-4.1
gcc-4.1-base gettext-base gnupg gpgv grep groff-base gzip hddtemp hostname iamerican ibritish ifupdown info initramfs-tools
initscripts installation-report iproute iptables iputils-ping ispell jed jed-common klibc-utils klogd laptop-detect less libacl1
libatm1 libattr1 libblkid1 libbz2-1.0 libcomerr2 libconsole libcurl3 libdb4.2 libdbd-mysql-perl libdbi-perl libedit2 libevent1
libgc1c2 libgnutls26 libgpg-error0 libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libidn11 libidn11-dev libklibc
libldap2-dev liblocale-gettext-perl liblockfile1 libltdl3 libltdl3-dev libmagic1 libmhash2 libncursesw5 libnewt0.52 libnfsidmap2
libpam-modules libpam-runtime libpam0g libpcrecpp0 libpng12-0 libpopt0 libreadline5 librpcsecgss3 libsasl2-2 libselinux1
libsemanage1 libsepol1 libsigc+±2.0-0c2a libslang2 libss2 libstdc++6 libstring-escape-perl libtasn1-3 libtasn1-3-bin
libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl liburi-perl libusb-0.1-4 libuuid1 libvolume-id0 libwrap0
libwww-perl libx11-6 libx11-data libx11-dev libxau-dev libxau6 libxdmcp-dev libxdmcp6 libxext-dev libxext6 libxml2 libxml2-dev
libxpm-dev libxpm4 lilo linux-libc-dev login logrotate lsb-base lsof lynx m4 make makedev man-db manpages manpages-de manpages-es
manpages-fr manpages-fr-dev manpages-fr-extra manpages-pl mawk mbr mime-support mktemp module-init-tools mount mpack mtools
mtr-tiny mysql-client mysql-client-5.0 mysql-server mysql-server-5.0 nano ncurses-base ncurses-bin ncurses-term net-tools netbase
netcat ntpdate openbsd-inetd openssh-blacklist openssh-client openssh-server openssl passwd patch pciutils perl perl-base
perl-modules pkg-config policycoreutils procps proftpd psmisc python python-central python-minimal python-newt python-selinux
python-semanage python-support readline-common reiserfsprogs reportbug rmail rsync screen sed sendmail sendmail-base sendmail-bin
sendmail-cf sensible-mda sharutils smartmontools ssh strace sysklogd sysv-rc sysvinit sysvinit-utils tar tasksel tasksel-data
tcpd telnet texinfo time traceroute ttf-dejavu ucf udev unzip update-inetd usbutils util-linux vim vim-common vim-runtime
vim-tiny w3m wamerican wget whiptail whois x11-common x11proto-core-dev x11proto-input-dev x11proto-kb-dev x11proto-xext-dev
xtrans-dev zlib1g
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
aptitude-doc-cs aptitude-doc-en aptitude-doc-fi aptitude-doc-fr aptitude-doc-ja bash-completion bsd-mailx debian-faq
heirloom-mailx libcompress-zlib-perl libfribidi0 libhtml-format-perl libhtml-template-perl libmailtools-perl libnet-xwhois-perl
libparse-debianchangelog-perl libsasl2-modules libterm-readkey-perl libtool lockfile-progs mailutils mailx
openssh-blacklist-extra selinux-policy-default uuid-runtime wbritish xauth xml-core
267 paquets mis à jour, 43 nouvellement installés, 3 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 163Mo d’archives. Après dépaquetage, 76,1Mo seront utilisés.
Les paquets suivants ont des dépendances non satisfaites :
libsasl2: Dépend: libsasl2-2 (= 2.1.22.dfsg1-8) mais 2.1.22.dfsg1-23 doit être installé.
libssp0: Dépend: gcc-4.1-base (= 4.1.1-21) mais 4.1.2-25 doit être installé.
Resolving dependencies…
Les actions suivantes permettront de résoudre ces dépendances :

Installer les paquets suivants :
libterm-readkey-perl [2.30-4 (stable)]

Conserver les paquets suivants dans leur version actuelle :
bash [3.1dfsg-8 (now)]
cpp-4.1 [4.1.1-21 (now)]
doc-debian [3.1.5 (now)]
gcc-4.1 [4.1.1-21 (now)]
gcc-4.1-base [4.1.1-21 (now)]
libsasl2-2 [2.1.22.dfsg1-8 (now)]
libuuid1 [1.39+1.40-WIP-2006.11.14+dfsg-2etch1 (now)]
mysql-server-5.0 [5.0.32-7etch8 (now)]
ntpdate [1:4.2.2.p4+dfsg-2 (now)]
openssh-client [1:4.3p2-9etch3 (now)]
openssh-server [1:4.3p2-9etch3 (now)]

Le score est de -562

Accepter cette solution ? [Y/n/q/?]
[/code]

Mouais… Je te conseille pas de lancer un upgrade tout de suite et attendre l’avis d’expert. Perso je jetterais un oeil plus en profondeur demain mais surtout ne te précipite pas ! :smt003

Il n’y a à priori que 2 paquets qui posent problème :

libsasl2 est un paquet de transition : il peut (et il doit) être enlevé sans risque.
libssp0 n’existe plus pour Lenny : vu les problèmes qui pose pour la mise à niveau il vaut mieux l’enlever aussi.

Ensuite je ne peux que te conseiller d’aller voir la doc officielle concernant la mise à niveau vers Lenny et de faire une simulation (-s) avant chaque manipulation sur les paquets.

En suivant vos recommandations et celles de la doc officielle linkée par “…”, j’ai donc tout mis à jour et j’ai maintenant une installation de lenny clean.

La seule erreur que j’ai eu est :

[code]*** *** *** WARNING *** WARNING *** WARNING *** WARNING *** *** ***

Everything you need to support STARTTLS (encrypted mail transmission
and user authentication via certificates) is installed and configured
but is NOT being used.

To enable sendmail to use STARTTLS, you need to:

  1. Add this line to /etc/mail/sendmail.mc and optionally
    to /etc/mail/submit.mc:
    include(`/etc/mail/tls/starttls.m4’)dnl
  2. Run sendmailconfig
  3. Restart sendmail

Checking {sendmail,submit}.mc and related databases…
Reading configuration from /etc/mail/sendmail.conf.
Validating configuration.
Creating /etc/mail/databases…
Reading configuration from /etc/mail/sendmail.conf.
Validating configuration.
Creating /etc/mail/databases…
Reading configuration from /etc/mail/sendmail.conf.
Validating configuration.
Creating /etc/mail/Makefile…
Reading configuration from /etc/mail/sendmail.conf.
Validating configuration.
Writing configuration to /etc/mail/sendmail.conf.
Writing /etc/cron.d/sendmail.
Disabling HOST statistics file(/var/lib/sendmail/host_status).
Creating /etc/mail/sendmail.cf…
*** ERROR: FEATURE() should be before MAILER()
*** MAILER(local') must appear after FEATURE(always_add_domain’)*** ERROR: FEATURE() should be before MAILER()
*** MAILER(local') must appear after FEATURE(allmasquerade’)*** ERROR: FEATURE() should be before MAILER()

Creating /etc/mail/submit.cf…
Informational: confCR_FILE file empty: /etc/mail/relay-domains
Informational: confCT_FILE file empty: /etc/mail/trusted-users
Updating /etc/mail/access…
Updating /etc/mail/aliases…
/etc/mail/aliases: 13 aliases, longest 10 bytes, 141 bytes total

Warning: These messages were issued while creating sendmail.cf
make sure they are benign before starting sendmail!

Errors in generating sendmail.cf
*** ERROR: FEATURE() should be before MAILER()
*** MAILER(local') must appear after FEATURE(always_add_domain’)*** ERROR: FEATURE() should be before MAILER()
*** MAILER(local') must appear after FEATURE(allmasquerade’)*** ERROR: FEATURE() should be before MAILER()

Starting Mail Transport Agent (MTA): sendmail.
[/code]
Est-ce problèmatique ?

Cela dit, la mise à jour ne change pas mes soucis de “Too many open files” dans les logs Apache :frowning:

Je crois que j’ai fini par trouver la source du problème sur cette page :
dmail.zsi.at/cgi-bin/dwww/usr/sh … .Debian.gz

[quote]6) Message “Couldn’t create pollset in child; check user or system limits” in
error log

On Linux kernels since 2.6.27.8, the value in

/proc/sys/fs/epoll/max_user_instances

needs to be larger than

for prefork/itk  MPM: 2 * MaxClients
for worker/event MPM: MaxClients + MaxClients/ThreadsPerChild

It can be set on boot by adding a line like

    fs.epoll.max_user_instances=1024

to /etc/sysctl.conf.
[/quote]

J’ai donc fait un # echo 1024 > /proc/sys/fs/epoll/max_user_instances et ajouté dans le fichier /etc/sysctl.conf

Et cela semble fonctionner :slightly_smiling:

Merci pour ce retour et bonne continuation