Projet

Général

Profil

Tâche #12734

Scénario #10952: Recompiler e2guardian pour augmenter le nombre de child maximum

Recompiler e2guardian en augmentant le nombre de child maximum

Ajouté par Joël Cuissinat il y a plus de 8 ans. Mis à jour il y a environ 8 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Début:
28/08/2015
Echéance:
% réalisé:

100%

Temps estimé:
2.00 h
Temps passé:
Restant à faire (heures):
0.0

Description

Emmanuel GARETTE a écrit :

Le paquet e2guardian est compilé avec seulement 1024 - 7 processus :

'--with-filedescriptors=1024' \

Il serait bien de changer ce paramétrage en mettant par exemple :

'--with-filedescriptors=8196'

Par contre il faudrait modifier le script d'init est ajouter : 'ulimit -n 8196' pour que le processus démarre.

Révisions associées

Révision 8617bd5a (diff)
Ajouté par Philippe Caseiro il y a plus de 8 ans

debian/rules: Augmentation du nombre maximum de fildescriptors.

On augmente ainsi le nombre maximum de processus pour e2guardian

ref #12734 @20m

(reste a tester le build et a changer le script d'init)

Révision 10844554 (diff)
Ajouté par Philippe Caseiro il y a plus de 8 ans

Ajout du patch pour pouvoir dépasser FD_SETSIZE.

Permet a e2guardian de dépasser la limite fixée par FD_SETSIZE, Cette manipulation
permet de e2guardian d'ouvrir plus de 1024 processus.

ref #12734 @2h

Historique

#1 Mis à jour par Philippe Caseiro il y a plus de 8 ans

  • Assigné à mis à Philippe Caseiro

#2 Mis à jour par Scrum Master il y a plus de 8 ans

  • Statut changé de Nouveau à En cours

#3 Mis à jour par Philippe Caseiro il y a plus de 8 ans

  • Restant à faire (heures) changé de 2.0 à 6.0

Il semble qu'il ne suiffit pas de changer cette valeur dans le rules pour que e2guardian soit fonctionnel sur le système.

Actuellement le démon refuse de ce lancer et quitte avec le message d'erreur suivant :

Error reading custom image file:
 Compiled with --with-filedescriptors too high
You should upgrade your FD_SETSIZE=1024
E2guardian compiled with with-filedescriptors=8196
Or reduce --with-filedescriptors=8196 under 1024
   ...fail!

#4 Mis à jour par Philippe Caseiro il y a plus de 8 ans

  • Restant à faire (heures) changé de 6.0 à 2.0

#5 Mis à jour par Philippe Caseiro il y a plus de 8 ans

  • % réalisé changé de 0 à 80

#6 Mis à jour par Scrum Master il y a plus de 8 ans

  • Statut changé de En cours à Résolu

#7 Mis à jour par Emmanuel GARETTE il y a plus de 8 ans

  • Statut changé de Résolu à En cours

Pour moi, il faut revenir en arrière.

J'ai mis un poste gnu/linux derrière un AmonEcole + un eolebase dans l'académie.

Sur l'amonecole :

- j'ai mis "maxchildren = 2048"
- ulimit n 8192
/usr/sbin/e2guardian -N -c /etc/guardian/guardian0/guardian.conf

Sur l'eolebase :

cat /etc/nginx/sites-enabled/default
server {
    listen 80;
    location ^~ /test {
      echo_sleep 2;
      echo hello;
    }
}

root@eolebase:~# grep work /etc/nginx/nginx.conf
/etc/nginx/nginx.conf:    worker_connections 2048;

Sur le client :

j=10000; for i in $(seq 1 $j); do ab -k -X 10.3.2.2:3128 -n 10 -c 10 http://192.168.0.24/test_2.html.180.$i & done

Une fois la limite des 102x passé :

root@internet:~# /usr/sbin/e2guardian -N -c /etc/guardian/guardian0/guardian.conf
Error reading custom image file: 
*** buffer overflow detected ***: /usr/sbin/e2guardian terminated
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x7338f)[0x7f69b41e438f]
/lib/x86_64-linux-gnu/libc.so.6(__fortify_fail+0x5c)[0x7f69b427bc9c]
/lib/x86_64-linux-gnu/libc.so.6(+0x109b60)[0x7f69b427ab60]
/lib/x86_64-linux-gnu/libc.so.6(+0x10abe7)[0x7f69b427bbe7]
/usr/sbin/e2guardian[0x442906]
/usr/sbin/e2guardian[0x442ff1]
/usr/sbin/e2guardian[0x444e79]
/usr/sbin/e2guardian[0x450927]
/usr/sbin/e2guardian[0x4067d0]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7f69b4192ec5]
/usr/sbin/e2guardian[0x406fbf]
======= Memory map: ========
00400000-004ba000 r-xp 00000000 fc:03 406155                             /usr/sbin/e2guardian
006ba000-006bb000 r--p 000ba000 fc:03 406155                             /usr/sbin/e2guardian
006bb000-006bc000 rw-p 000bb000 fc:03 406155                             /usr/sbin/e2guardian
006bc000-006c0000 rw-p 00000000 00:00 0 
01a50000-0268f000 rw-p 00000000 00:00 0                                  [heap]
7f69a82b8000-7f69a9b1b000 rw-p 00000000 00:00 0 
7f69aaaaa000-7f69ac30d000 rw-p 00000000 00:00 0 
7f69ad29c000-7f69aeaff000 rw-p 00000000 00:00 0 
7f69af676000-7f69af681000 r-xp 00000000 fc:03 280001                     /lib/x86_64-linux-gnu/libnss_files-2.19.so
7f69af681000-7f69af880000 ---p 0000b000 fc:03 280001                     /lib/x86_64-linux-gnu/libnss_files-2.19.so
7f69af880000-7f69af881000 r--p 0000a000 fc:03 280001                     /lib/x86_64-linux-gnu/libnss_files-2.19.so
7f69af881000-7f69af882000 rw-p 0000b000 fc:03 280001                     /lib/x86_64-linux-gnu/libnss_files-2.19.so
7f69af882000-7f69af88d000 r-xp 00000000 fc:03 280003                     /lib/x86_64-linux-gnu/libnss_nis-2.19.so
7f69af88d000-7f69afa8c000 ---p 0000b000 fc:03 280003                     /lib/x86_64-linux-gnu/libnss_nis-2.19.so
7f69afa8c000-7f69afa8d000 r--p 0000a000 fc:03 280003                     /lib/x86_64-linux-gnu/libnss_nis-2.19.so
7f69afa8d000-7f69afa8e000 rw-p 0000b000 fc:03 280003                     /lib/x86_64-linux-gnu/libnss_nis-2.19.so
7f69afa8e000-7f69b1473000 rw-p 00000000 00:00 0 
7f69b1473000-7f69b2cd6000 rw-p 00000000 00:00 0 
7f69b2e49000-7f69b2e60000 r-xp 00000000 fc:03 279998                     /lib/x86_64-linux-gnu/libnsl-2.19.so
7f69b2e60000-7f69b305f000 ---p 00017000 fc:03 279998                     /lib/x86_64-linux-gnu/libnsl-2.19.so
7f69b305f000-7f69b3060000 r--p 00016000 fc:03 279998                     /lib/x86_64-linux-gnu/libnsl-2.19.so
7f69b3060000-7f69b3061000 rw-p 00017000 fc:03 279998                     /lib/x86_64-linux-gnu/libnsl-2.19.so
7f69b3061000-7f69b3864000 rw-p 00000000 00:00 0 
7f69b3a5b000-7f69b3a64000 r-xp 00000000 fc:03 279999                     /lib/x86_64-linux-gnu/libnss_compat-2.19.so
7f69b3a64000-7f69b3c63000 ---p 00009000 fc:03 279999                     /lib/x86_64-linux-gnu/libnss_compat-2.19.so
7f69b3c63000-7f69b3c64000 r--p 00008000 fc:03 279999                     /lib/x86_64-linux-gnu/libnss_compat-2.19.so
7f69b3c64000-7f69b3c65000 rw-p 00009000 fc:03 279999                     /lib/x86_64-linux-gnu/libnss_compat-2.19.so
7f69b3c65000-7f69b3f33000 r--p 00000000 fc:03 407075                     /usr/lib/locale/locale-archive
7f69b3f33000-7f69b3f70000 r-xp 00000000 fc:03 277848                     /lib/x86_64-linux-gnu/libpcre.so.3.13.1
7f69b3f70000-7f69b416f000 ---p 0003d000 fc:03 277848                     /lib/x86_64-linux-gnu/libpcre.so.3.13.1
7f69b416f000-7f69b4170000 r--p 0003c000 fc:03 277848                     /lib/x86_64-linux-gnu/libpcre.so.3.13.1
7f69b4170000-7f69b4171000 rw-p 0003d000 fc:03 277848                     /lib/x86_64-linux-gnu/libpcre.so.3.13.1
7f69b4171000-7f69b432c000 r-xp 00000000 fc:03 279969                     /lib/x86_64-linux-gnu/libc-2.19.so
7f69b432c000-7f69b452b000 ---p 001bb000 fc:03 279969                     /lib/x86_64-linux-gnu/libc-2.19.so
7f69b452b000-7f69b452f000 r--p 001ba000 fc:03 279969                     /lib/x86_64-linux-gnu/libc-2.19.so
7f69b452f000-7f69b4531000 rw-p 001be000 fc:03 279969                     /lib/x86_64-linux-gnu/libc-2.19.so
7f69b4531000-7f69b4536000 rw-p 00000000 00:00 0 
7f69b4536000-7f69b454c000 r-xp 00000000 fc:03 279982                     /lib/x86_64-linux-gnu/libgcc_s.so.1
7f69b454c000-7f69b474b000 ---p 00016000 fc:03 279982                     /lib/x86_64-linux-gnu/libgcc_s.so.1
7f69b474b000-7f69b474c000 rw-p 00015000 fc:03 279982                     /lib/x86_64-linux-gnu/libgcc_s.so.1
7f69b474c000-7f69b4851000 r-xp 00000000 fc:03 279990                     /lib/x86_64-linux-gnu/libm-2.19.so
7f69b4851000-7f69b4a50000 ---p 00105000 fc:03 279990                     /lib/x86_64-linux-gnu/libm-2.19.so
7f69b4a50000-7f69b4a51000 r--p 00104000 fc:03 279990                     /lib/x86_64-linux-gnu/libm-2.19.so
7f69b4a51000-7f69b4a52000 rw-p 00105000 fc:03 279990                     /lib/x86_64-linux-gnu/libm-2.19.so
7f69b4a52000-7f69b4b38000 r-xp 00000000 fc:03 538808                     /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19
7f69b4b38000-7f69b4d37000 ---p 000e6000 fc:03 538808                     /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19
7f69b4d37000-7f69b4d3f000 r--p 000e5000 fc:03 538808                     /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19
7f69b4d3f000-7f69b4d41000 rw-p 000ed000 fc:03 538808                     /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19
7f69b4d41000-7f69b4d56000 rw-p 00000000 00:00 0 
7f69b4d56000-7f69b4d6e000 r-xp 00000000 fc:03 280033                     /lib/x86_64-linux-gnu/libz.so.1.2.8
7f69b4d6e000-7f69b4f6d000 ---p 00018000 fc:03 280033                     /lib/x86_64-linux-gnu/libz.so.1.2.8
7f69b4f6d000-7f69b4f6e000 r--p 00017000 fc:03 280033                     /lib/x86_64-linux-gnu/libz.so.1.2.8
7f69b4f6e000-7f69b4f6f000 rw-p 00018000 fc:03 280033                     /lib/x86_64-linux-gnu/libz.so.1.2.8
7f69b4f6f000-7f69b4f71000 r-xp 00000000 fc:03 535485                     /usr/lib/x86_64-linux-gnu/libpcreposix.so.3.13.1
7f69b4f71000-7f69b5170000 ---p 00002000 fc:03 535485                     /usr/lib/x86_64-linux-gnu/libpcreposix.so.3.13.1
7f69b5170000-7f69b5171000 r--p 00001000 fc:03 535485                     /usr/lib/x86_64-linux-gnu/libpcreposix.so.3.13.1
7f69b5171000-7f69b5172000 rw-p 00002000 fc:03 535485                     /usr/lib/x86_64-linux-gnu/libpcreposix.so.3.13.1
7f69b5172000-7f69b5195000 r-xp 00000000 fc:03 279959                     /lib/x86_64-linux-gnu/ld-2.19.so
7f69b52f2000-7f69b538d000 rw-p 00000000 00:00 0 
7f69b5391000-7f69b5394000 rw-p 00000000 00:00 0 
7f69b5394000-7f69b5395000 r--p 00022000 fc:03 279959                     /lib/x86_64-linux-gnu/ld-2.19.so
7f69b5395000-7f69b5396000 rw-p 00023000 fc:03 279959                     /lib/x86_64-linux-gnu/ld-2.19.so
7f69b5396000-7f69b5397000 rw-p 00000000 00:00 0 
7ffe7b065000-7ffe7b086000 rw-p 00000000 00:00 0                          [stack]
7ffe7b1f0000-7ffe7b1f2000 r--p 00000000 00:00 0                          [vvar]
7ffe7b1f2000-7ffe7b1f4000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
Abandon
root@internet:~# 

#8 Mis à jour par Philippe Caseiro il y a plus de 8 ans

Lorsqu'on définis un minchildren supérieur a 1018 e2guardian plante lamentablement.
Tentative de résolution du problème.

Une question a été posé sur le groupe e2guardian : https://groups.google.com/forum/#!topic/e2guardian/pcMwXLXTFKE

#9 Mis à jour par Philippe Caseiro il y a plus de 8 ans

  • % réalisé changé de 80 à 100
  • Restant à faire (heures) changé de 2.0 à 0.25

Après de longues recherches et des échanges avec les dev e2guardian visibles ici : (https://groups.google.com/forum/#!topic/e2guardian/pcMwXLXTFKE), nous avons trouvé une solution.

Pour des raisons obscures lorsqu'on compile e2guardian avec les bonnes options pour le support de 8192 processus sur une ubuntu 14.04 e2guardian plante dès qu'il
arrive à 1024 sockets ouverts.

Il ce trouve que lorsque nous effectuons exactement les mêmes opérations sur une Debian wheezy le démon fonctione en exécution sur une 14.04 sans aucun problème.

Nous avons donc fait le choix de construire un paquet manuellement sur une wheezy avec les bonnes options et de le fournir sur nos dépôts.

Afin d'avoir une version la plus à jour possible et profiter des dernières améliorations de e2guardian nous avons tout passé en version 3.2.0.

Pour construire le paquet il faut avoir une wheezy a disposition dans la bonne architecture (amd64 ou i386).

Donc sur la wheezy faire les opérations suivantes :

  1. Cloner le dépôt e2guardian de eole : git clone https://dev-eole.ac-dijon.fr/git/e2guardian
  2. Installer les dépendances de build (voir debian/control)
  3. Construire une archive "orig" depuis la branche master : git archive --prefix e2guardian-3.2.0/ -o ../e2guardian_3.2.0_orig.tar.gz master
  4. Lancer la création du paquet depuis la branche de packaging dist/eole/2.5/master : dpkg-buildpackage -us -uc
  5. Passer le tout a Daniel pour la publication sur les dépôts.

#10 Mis à jour par Scrum Master il y a plus de 8 ans

  • Statut changé de En cours à Résolu

#11 Mis à jour par Fabrice Barconnière il y a plus de 8 ans

  • Restant à faire (heures) changé de 0.25 à 0.0

e2guardian est fonctionnel

#12 Mis à jour par Fabrice Barconnière il y a plus de 8 ans

  • Statut changé de Résolu à Fermé

#13 Mis à jour par Daniel Dehennin il y a environ 8 ans

Une page wiki a été créé pour décrire la procédure de compilation spécifique 2.5 du paquet.

Formats disponibles : Atom PDF