Scénario #35717
Permettre le tunning du nombre de fichiers ouverts par les démons basés sur twisted
100%
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
Demandes liées
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/2023supprimé - 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