Project

General

Profile

Tâche #12734

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

Recompiler e2guardian en augmentant le nombre de child maximum

Added by Joël Cuissinat over 5 years ago. Updated about 5 years ago.

Status:
Fermé
Priority:
Normal
Assigned To:
Start date:
08/28/2015
Due date:
% Done:

100%

Estimated time:
2.00 h
Spent time:
Remaining (hours):
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.

Associated revisions

Revision 8617bd5a (diff)
Added by Philippe Caseiro over 5 years ago

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)

Revision 10844554 (diff)
Added by Philippe Caseiro over 5 years ago

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

History

#1 Updated by Philippe Caseiro over 5 years ago

  • Assigned To set to Philippe Caseiro

#2 Updated by Scrum Master over 5 years ago

  • Status changed from Nouveau to En cours

#3 Updated by Philippe Caseiro over 5 years ago

  • Remaining (hours) changed from 2.0 to 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 Updated by Philippe Caseiro over 5 years ago

  • Remaining (hours) changed from 6.0 to 2.0

#5 Updated by Philippe Caseiro over 5 years ago

  • % Done changed from 0 to 80

#6 Updated by Scrum Master over 5 years ago

  • Status changed from En cours to Résolu

#7 Updated by Emmanuel GARETTE over 5 years ago

  • Status changed from Résolu to 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 Updated by Philippe Caseiro over 5 years ago

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 Updated by Philippe Caseiro over 5 years ago

  • % Done changed from 80 to 100
  • Remaining (hours) changed from 2.0 to 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 Updated by Scrum Master over 5 years ago

  • Status changed from En cours to Résolu

#11 Updated by Fabrice Barconnière over 5 years ago

  • Remaining (hours) changed from 0.25 to 0.0

e2guardian est fonctionnel

#12 Updated by Fabrice Barconnière over 5 years ago

  • Status changed from Résolu to Fermé

#13 Updated by Daniel Dehennin about 5 years ago

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

Also available in: Atom PDF