Je travaille sur un site assez fréquenté (>150 000 pages vues/jour). Je rencontre des erreurs 429, principalement sur le bus de messages. J’avais précédemment des problèmes dus à une mauvaise configuration de set_real_ip_from, mais cela est résolu. J’ai également supprimé (peut-être temporairement ?) le modèle de limitation de débit.
Je vois toujours environ 0,5 erreur 429 par seconde.
J’ai 5 workers unicorn avec un CPU à 2 cœurs/4 threads. 16 Go de RAM. Postgres est sur un hôte séparé. Les CPU restent >50 % inactifs.
J’ai supprimé le modèle de limitation de débit et porté le nombre de workers unicorn à 5 vers 8h20.
C’est tout à fait normal : le message-bus appliquera un backoff avec le code 429 car vos unicorns sont fortement sollicités et mettent un peu en file d’attente.
Un ratio de 4 cœurs pour 16 Go de RAM est vraiment étrange si le nœud ne exécute pas la base de données. Par exemple, 8 cœurs pour 8 Go serait plus approprié.
Super ! Merci. Le processeur est toujours très sollicité par le traitement d’images, ce qui, j’espère, ne devrait pas prendre plus d’un jour ou deux.
C’est vrai. Mais le serveur physique n’a que 2 cœurs/4 threads. Il est facile d’ajouter de la RAM, pas de cœurs (j’en ai un autre à la maison avec 32 Go !). J’ai séparé la base de données et le site web sur deux machines pour obtenir plus de puissance CPU. J’ai une demi-douzaine d’autres bases de données provenant de sites à faible trafic sur le même serveur de base de données (le site web est sur un hôte différent). Pensez-vous qu’il vaudrait mieux faire tourner la base de données et le site web sur la même machine ? Je perdrais un peu de CPU mais j’améliorerais la latence, je suppose.
Si vous avez une capacité de répartition de charge ici, vous pourriez essayer de placer des workers web sur les deux machines pour votre site à forte charge, avec moins sur celle qui contient la base de données, peut-être 5+2 ?
Si résoudre le problème avec de l’argent est une option, il suffit de prendre un autre hôte avec un meilleur ratio CPU:RAM.
Eh bien, ces machines, que j’ai obtenues gratuitement, commencent à dater un peu, alors j’essaie de m’y faire — la performance d’un seul CPU semble toujours meilleure que celle d’un droplet DO. Si résoudre le problème avec de l’argent à court terme était une option, je n’aurais probablement pas ce client particulier qui veut des performances d’entreprise à des prix commerciaux.
Mais je vois aussi que j’avais le nombre de licornes codé en dur ailleurs dans la chaîne, donc je n’en exécute toujours que 3.
Malheureusement, ma configuration actuelle ne communique qu’avec Docker sur un seul hôte. Je devrais consacrer un peu plus de temps pour voir si je peux installer quelques licornes sur l’autre machine aussi. Il est probablement temps de regarder à nouveau HAproxy, mais j’ai un autre projet que je veux vraiment lancer en premier.
Merci beaucoup pour vos éclaircissements.
EDIT : Et quand j’ai enfin passé de 3 à 5 licornes, les graphiques de performance semblent à peu près les mêmes (mais peut-être un tout petit peu plus lents ?), mais les erreurs 429 ont considérablement diminué. Il semble que, une fois le traitement des images terminé, cela va très bien fonctionner.
Et, seulement un jour plus tard, les erreurs 429 sont tombées à presque zéro, donc le conseil de Rafael « ne vous inquiétez pas » était brillant ! Merci encore, Kane et Rafael. Je ne saurais trop exprimer à quel point j’apprécie votre aide.