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é.
À 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.
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.)
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