Mumble server – Instabilités avec de nombreux utilisateurs et/ou serveurs virtuels

Mumble server à la fâcheuse particularité d’être instable lors des montés en charges si l’on ne fait pas de modification sur son serveur.

Le problème principal est la consommation de file descriptors qui est très très importante.

Calcul du nombre de file descriptor nécessaires

De base, mumble serveur ne peut utiliser que 1024 file descriptors (ce qui est peu pour une infra assez grosse).

Configuration d’exemple :

Serveurs virtuels : 80

Nombre de client total : 500

Il faut 20 file desciptors par serveur virtuel + 1 file descriptor par client.

Ce qui donne :

(Nombre de serveur virtuel x 20 + Nombre de client total)
(80 x 20 + 500) = 2100

Il vous faudra 2100 file descriptor pour que votre installation soit stable.

Paramétrage des file descriptors sur serveur linux

Vous pouvez modifier le nombre de file descriptors à chaud, mais attention, cette modification n’est pas permanente.

# Modifier la limite de file descriptor à chaud
ulimit -n 8192 # chiffre à modifier selon votre config
Modification file descriptor

Pour modifier le nombre de file descriptors utilisable par Mumble serveur et les applications de votre serveur vous devez modifier un fichier de configuration (/etc/security/limits.conf).

nano /etc/security/limits.conf

# Ajouter ces lignes à la fin du fichier
*       hard    nofile  8192 # chiffre à modifier selon votre config
*       soft    nofile  8192
Ajout file descriptor

Puis vérifiez que votre système à bien prit en compte cette modification.

$ ulimit -Hn
8192

Mumble et les files descriptors !

Entrons dans le vif du sujet. A présent, votre système est près à accueillir des applications consommant le nombre de file descriptor que vous avez paramétrer.

Cependant, mumble server ne sera pas ce cette avis si vous avez téléchargé la version compilé.

Vérification du nombre de file descriptor utilisable par mumble seveur

murmur-static_x86-1.2.8$ ./murmur.x86 -limits
murmur.x86: fd_meta_index_set: fd=1024 is not less then limit max_ifd=1024 or negative. Execution aborted.
Vérification des file descriptors Murmur

Et la, c’est le drame, Mumble server vous indique que sa version ne peut pas supporter plus de 1024 file descriptors…  (Vous avez le droit de pleurer !).

La solution reste assez simple, vous devez impérativement compiler mumble serveur à partir des sources.

Compilation de mumble server

1) Installation des dépendances

apt-get build-dep mumble

====> Ou/Or <====

apt-get install build-essential pkg-config qt4-dev-tools libqt4-dev libspeex1 \
                libspeex-dev libboost-dev libasound2-dev libssl-dev g++ \
                libspeechd-dev libzeroc-ice-dev ice-slice libpulse-dev slice2cpp \
                libcap-dev libspeexdsp-dev libprotobuf-dev protobuf-compiler \
                libogg-dev libavahi-compat-libdnssd-dev libsndfile1-dev \
                libg15daemon-client-dev libxi-dev 

2) Téléchargement des sources mumble

Téléchargez Mumble depuis son repository git pour avoir la dernière version en date.

# Installez si vous ne l'avez pas git
apt-get install git
Installation de GIT
# Puis, récupérez les sources du projet Mumble
git clone git://github.com/mumble-voip/mumble.git mumble
cd mumble
git submodule init
git submodule update
Récupération des sources Mumble

3) Et on compile !

Si vous souhaitez compiler le projet entier (client + serveur) :

qmake -recursive main.pro
make
Compilation Mumble (Client + Serveur)

 

Si vous ne souhaitez que compiler la partie serveur de Mumble à savoir Murmur :

qmake -recursive main.pro CONFIG+=no-client
make
Compilation de Murmur

 

4) Et la, la magie de la compilation !

Vous trouverez vos fichier binaires :

quadeare@quadeare-ubuntu:~/Bureau/mumble/mumble/release$ ls
libcelt0.so         libcelt0.so.0.7    libmumble.so.1.3    murmurd
libcelt0.so.0       libcelt0.so.0.7.0  libmumble.so.1.3.0  plugins
libcelt0.so.0.11    libmumble.so       libopus.a
libcelt0.so.0.11.0  libmumble.so.1     mumble
Fichier binaires Mumble
# Si vous voulez rendre executables vos fichiers binaires
chmod +x murmurd 
chmod +x mumble
Chmod des fichiers binaires

Le fichier "mumble" est le client.
Le fichier "murmurd" est le serveur.

5) Le problème des file descriptors est maintenant résolu !

Maintenant vous pouvez tester l'utilisation des file descriptors par le serveur Mumble.

quadeare@quadeare-ubuntu:~/Bureau/mumble/mumble/release$ ./murmurd -limits
<W>2014-12-08 21:36:02.919 Initializing settings from /home/quadeare/.murmurd/murmur.ini (basepath /home/quadeare/.murmurd)
<W>2014-12-08 21:36:02.930 OpenSSL: OpenSSL 1.0.1f 6 Jan 2014
<W>2014-12-08 21:36:02.930 Running descriptor test.
<W>2014-12-08 21:36:02.930 0 descriptors...
<W>2014-12-08 21:36:02.932 1024 descriptors...
<W>2014-12-08 21:36:02.934 2048 descriptors...
<W>2014-12-08 21:36:02.935 3072 descriptors...
<W>2014-12-08 21:36:02.937 4096 descriptors...
<W>2014-12-08 21:36:02.939 5120 descriptors...
<W>2014-12-08 21:36:02.941 6144 descriptors...
<W>2014-12-08 21:36:02.942 7168 descriptors...
<C>2014-12-08 21:36:02.949 Managed to open 8182 descriptors
<W>2014-12-08 21:36:02.950 0 threads...
<W>2014-12-08 21:36:02.964 512 threads...
<F>2014-12-08 21:36:02.994 Managed to spawn 1022 threads
Chmod des fichiers binaires

 

Et la, vous sautez de joie et trouverez votre vieille voisine de palier belle et désirable 😉

 

 

2 commentaires

  1. C’est un problème avec la version statique du serveur qui nous l’espérons être bientôt corrigé.

    (Blame my bad French on Google Translate ☺)

    1. That’s not a problem, google trad is almost perfect 😉

      I think the problem is not really technical, but there is a lack of documentation about this problem. I looked for a solution during several days before found a solution !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.