[RUBY] [Rails] Mechanize consomme beaucoup de descripteurs de fichiers

Le contenu est comme le titre. Dans Rails, lorsque l'erreur de connexion Mysql2 apparaît Si vous utilisez le descripteur de fichier de façon anormale, il peut être lié.

Contexte

À un certain service (Rails, puma)

Mysql2::Error::ConnectionError

S'est produit si souvent que le service ne peut pas être utilisé.

Si vous suivez le journal en détail, il existe d'autres

Errno::EMFILE (Too many open files @ rb_sysopen ...(Abréviation)

Il semble qu'une telle erreur se produise également.

plus loin,,,

#Vérifier la limite supérieure du descripteur de fichier
ulimit -n
#Vérifiez le descripteur de fichier du processus puma
for i in $(ps aux | grep "[p]uma" | awk '{print $2}'); do sudo ls /proc/$i/fd | wc -l; done

Si vous vérifiez le nombre de fichiers ouverts du processus avec la commande ci-dessus Apparemment, le descripteur de fichier était plein.

Cause

En fait, dans le joyau appelé ** Mechanize ** que j'utilisais dans l'application au lieu d'ouvrir le fichier Il semble qu'une connexion ait été créée lors de l'acquisition de données de l'extérieur. (Cela semble être un bijou utilisé pour le grattage.)

Le descripteur de fichier semble compter ** les connexions ainsi que les fichiers ** Le problème s'est produit car un grand nombre de connexions ont été créées en continu sans être supprimées. (Peut-être que Mysql est également lié à la connexion ?? Veuillez commenter par une personne détaillée.)

Correspondance

Le problème est simplement que la connexion reste ouverte. J'ai besoin de le fermer.

La connexion de Mechanize semble être fermée lorsque vous appelez la méthode suivante Je l'appellerai lorsque le dernier traitement de la connexion utilisée sera terminé.

Mechanize.shutdown

Après cela, supprimons la connexion existante en redémarrant le serveur.

Recommended Posts

[Rails] Mechanize consomme beaucoup de descripteurs de fichiers
Connectez beaucoup de Python ou et et
Recevez de nombreux tweets Twitter à la fois
Python qui fusionne beaucoup d'excellence en un seul Excel
Python + sélénium pour GW beaucoup de publicités par courrier électronique
Afficher le résultat de sortie de sklearn.metrics.classification_report sous forme de fichier CSV