Projet

Général

Profil

Scénario #35717

Permettre le tunning du nombre de fichiers ouverts par les démons basés sur twisted

Ajouté par Jean-Marc MELET il y a 5 mois. Mis à jour il y a environ 2 mois.

Statut:
Terminé (Sprint)
Priorité:
Normal
Assigné à:
Catégorie:
-
Début:
01/10/2022
Echéance:
01/01/2024
% réalisé:

100%

Points de scénarios:
1.0
Restant à faire (heures):
0.00 heure
Estimation basée sur la vélocité:
Release:
Liens avec la release:
Auto

Description

Bonjour,

Nous avons récemment constaté un incident sur nos modules Zéphir, le service zephir_backend présentait régulièrement des dysfonctionnements qui nécessitaient une relance et le journal zephir_backend.alert.log saturait la partition avec un grand nombre de messages d'erreur de ce type traduisant un manque de ressource attribuée au processus:

2023-12-11T12:56:26.207765+01:00 zephir.ac-aix-marseille.fr zephir_backend: [-] IOError: [Errno 24] Too many open files: '/var/lib/zephir/conf/0133788X/711/zephir.eol'
2023-12-11T12:56:26.208708+01:00 zephir.ac-aix-marseille.fr zephir_backend: [-] #011psycopg2.OperationalError: could not create socket: Too many open files
2023-12-11T12:56:26.833596+01:00 zephir.ac-aix-marseille.fr zephir_backend: [twisted.protocols.tls.TLSMemoryBIOFactory] #011OpenSSL.SSL.Error: [('system library', 'fopen', 'Too many open files'), ('BIO routines', 'FILE_CTRL', 'system lib'), ('SSL routines', 'SSL_CTX_use_certificate_file', 'system lib')]

Apres recherche et tentative de modifier les limites au niveau système, processus et user dans limits.conf en vain nous avons identifié des fonctions dans la librairie test_posixprocess.py de twisted dans lesquelles sont codées en dur des limites qui semblent être la raison de la contrainte:

def test_resourceFDImplementation(self):
        """ 
        L{_FDDetector._fallbackFDImplementation} uses the L{resource} module if
        it is available, returning a range of integers from 0 to the
        minimum of C{1024} and the hard I{NOFILE} limit.
        """ 
        # When the resource module is here, use its value.
        self.revealResourceModule(512)
        self.assertEqual(
            list(range(512)), list(self.detector._fallbackFDImplementation()))

        # But limit its value to the arbitrarily selected value 1024.
        self.revealResourceModule(2048)
        self.assertEqual(
            list(range(1024)), list(self.detector._fallbackFDImplementation()))

    def test_fallbackFDImplementation(self):
        """ 
        L{_FDDetector._fallbackFDImplementation}, the implementation of last
        resort, succeeds with a fixed range of integers from 0 to 1024 when the
        L{resource} module is not importable.
        """ 
        self.hideResourceModule()
        self.assertEqual(list(range(1024)),
                         list(self.detector._fallbackFDImplementation()))

En effet en augmentant les valeurs maximum (1024) le service ne présente plus de symptômes ni de traces d'erreur de ce type dans les journaux depuis.

Si cela est confirmé serait-il envisageable un évolution pour passer ce paramètre en variable creole sur tous les modules?

Merci


Sous-tâches

Tâche #35835: ÉtudeFerméBenjamin Bohard


Demandes liées

Lié à eole-common - Tâche #15933: Augmenter la valeur ulimit du service zephir backend rend le service plus véloce Fermé 19/04/2016

Historique

#1 Mis à jour par Joël Cuissinat il y a 4 mois

  • Lié à Tâche #15933: Augmenter la valeur ulimit du service zephir backend rend le service plus véloce ajouté

#2 Mis à jour par Joël Cuissinat il y a 4 mois

Bonjour Jean-Marc,

Merci pour ton retour.

Peux-tu vérifier si l'augmentation du ulimit proposée dans la tâche liée est susceptible de résoudre le problème ?

Dans le cas contraire, nous pourrions patcher twisted, nous le faisons déjà (cf. #30555) !

Bien cordialement

Joël

#3 Mis à jour par Jean-Marc MELET il y a 4 mois

Bonjour,

Merci à toi pour la prise en charge.
Et non malheureusement, sauf erreur il y a une conf propre à nombre de démons (à priori ceux qui ne se basent pas sur sysV) qui définissent une limite de FD comme c'est le cas pour twisted, j'ai bien l'impression qu'on ne peut pas y couper...

#4 Mis à jour par Joël Cuissinat il y a 3 mois

  • Tracker changé de Demande à Scénario
  • Début 21/12/2023 supprimé
  • Release mis à Carnet de produit (Cadoles)
  • Points de scénarios mis à 1.0

#5 Mis à jour par Benjamin Bohard il y a environ 2 mois

  • Echéance mis à 01/01/2024
  • Assigné à mis à Benjamin Bohard
  • Version cible mis à Carnet Cadoles
  • Début mis à 01/10/2022

#6 Mis à jour par Joël Cuissinat il y a environ 2 mois

  • Statut changé de Nouveau à Terminé (Sprint)
  • Version cible changé de Carnet Cadoles à Livraison Cadoles 31/12/2023 (20)
  • Release changé de Carnet de produit (Cadoles) à EOLE 2.9.0

Décision finale : aucune action n'est nécessaire, cf. #35835#note-4

Formats disponibles : Atom PDF