Symfony API REST : ne supporte pas la charge

a marqué ce sujet comme résolu.

Mon API fonctionne désormais bien et j’ai voulu la mettre en prod (chez OVH), mais j’arrive a la mettre down avec un seul client dès qu’il commence a faire beaucoup de requêtes. Dans le meilleur des cas j’ai un SocketTimeoutException et j’arrive à relancer le flux avec success mais j’ai aussi régulièrement une erreur 503 (serveur provisoirement non disponible) et là je dois attendre plusieurs minutes avant que le serveur soit de nouveau dispo.

Par exemple : mon client (une appli web) envoie environs 800 POST suivi chacun de 1 à 5 post secondaires, j’ai mis en place une gestion de la pression c’est à dire que je n’envoie le post suivant que dans j’ai eu la réponse au post précédent pour le flux principal. Je ne le fais pas pour le flux secondaires (les 1 à 5 post secondaires).

Actuellement comme en plus je les envoie en mode debug (android) cela ralenti beaucoup le flux d’envoi (env 2 à 3 requetes par secondes), cela ne me semble pas beaucoup et m’inquiete.

Que puis-je faire ?

Par ailleurs, je souhaiterai optimiser l’authentification, en effet, le contrôle du token donne lieu a 2 requêtes dans la base de données : peut-on avoir un cache pour éviter ces lectures ? Si oui comment ?

Merci d’avance

800 POST en combien de temps ? C’est des requêtes longues ? Si oui tu peux peut-être asynchroniser ? T’as des requêtes SQL derrière ? Pour le token un Redis pourrait faire le taf. T’as déployé ça sur quoi, un mutu, un VPS, du cloud container ?

+0 -0

J’ai regardé j’ai moins de 10 requêtes par seconde. De toute facon le système attend la réponse pour envoyer la suite donc normalement ça doit suivre le rythme du serveur. Et oui j’ai des requêtes c’est des post. Certaines requêtes sont assez grosses.

J’ai deployé sur un mutu.

Mon applicatif est une appli android qui a une base locale et j’envoie les données de la base locale vers le serveur pour mise en place d’une synchro. La première fois ou chaque fois que l’appli n’a pas vu internet depuis longtemps elle est susceptible d’envoyer un lot de données conséquent.

Et encore là j’ai mis la backpressure car la première fois il m’a envoyé les 800 requetes en 10 secondes…

Un mutu c’est peut-être un peu limite en terme de performances. Je ne sais pas quelle offre tu as prise mais si tu regardes le descriptif des offres sur https://www.ovh.com/fr/hebergement-web/, ils conseillent max 175 visiteurs simultanés, sachant qu’un visiteur normalement sur un site ça fait une requête toutes les quelques secondes, et qu’il y a du cache.

Dix requêtes par seconde pour un seul client c’est pas négligeable comme charge. Surtout si tu échanges beaucoup de données. Si c’est pour de l’appli mobile tu risques de pomper très vite la batterie de tes utilisateurs.

Pour de la synchro de db une api REST c’est pas le plus adapté. Il y a des moyens spécifiques à cet usage beaucoup plus efficaces. ;)

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte