J’ai donc un problème avec Sidekiq.
Il exécute les jobs à une vitesse incroyable lorsque je surveille via l’interface web de Sidekiq. Mais occasionnellement, il semble être submergé et commence à fonctionner extrêmement lentement. Il tourne à environ 1 à 5 % de sa vitesse normale et ne se rétablit pas tant que je n’ai pas vidé Redis, et ce, malgré une utilisation des ressources du serveur qui est normale/faible.
Il semble que, dès que la file d’attente atteint une certaine taille, le système se fige et ralentit drastiquement, ce qui fait croître encore plus la file d’attente. Je ne fais que supposer ici ; peut-être que la file d’attente est simplement longue parce que le système ralentit pour une autre raison.
Cette GIF décrit ce que cela donne pour moi.
Il y a beaucoup de ressources serveur disponibles : l’utilisation du CPU est très faible en ce moment – moins de 10 %. Il y a aussi beaucoup de RAM et d’espace SSD disponibles. Concernant le serveur, il dispose de 16 cœurs CPU avec 32 threads. J’ai essayé d’exécuter entre 8 et 14 processus unicorn_sidekiq. J’ai également essayé 20, mais cela a généré beaucoup d’erreurs 5xx.
J’ai réussi à accélérer les jobs lents affichés dans l’onglet « busy » de l’interface web de Sidekiq en suivant cette solution : Could sidekiq queue be reason for 500 errors? - #30 by bartv (en ajoutant ‘vm.overcommit_memory = 1’ au fichier /etc/sysctl.conf et en redémarrant), ainsi qu’en réduisant le nombre de unicorn_sidekiq à 8 (au lieu de 12).
Cela tourne toujours lentement. J’ai vu ceci dans le journal Redis hier (le seul autre avertissement concernait l’absence de réglage de overcommit_memory à 1, que j’ai modifié ci-dessus) :
# WARNING: /proc/sys/net/core/somaxconn est défini à la valeur inférieure de 128
^ Quelqu’un a-t-il résolu cet avertissement ?
Quoi qu’il en soit, si quelqu’un a des idées sur la cause et/ou la solution, je vous prie de me le faire savoir. Je vous en serais reconnaissant.
Il serait vraiment génial de résoudre ce problème pour qu’il ne se reproduise pas, plutôt que de devoir vider Redis à chaque fois.
Voici une capture d’écran de ce que je vois sur le tableau de bord Sidekiq :
Et quelques captures d’écran des jobs dans l’onglet busy :
Aussi, quelqu’un sait-il s’il est sûr d’utiliser cette option ? Supprimer la file d’attente de priorité faible depuis l’interface web de Sidekiq ?





