Question

Arrière-plan

J'ai une application web qui permettra de créer une image de l'entrée de l'utilisateur. La création d'image peut prendre jusqu'à quelques secondes.

Problème

Si je laisse le fil du serveur, qui gère la demande / réponse aussi de générer l'image, qui va attacher un fil pendant deux secondes, et peut-être enliser mon serveur, affecter les performances, tuer les chiots, etc.

Question

Dois-je utiliser une file d'attente de tâches, telles que Céleri , de sorte que le serveur peut remettre de la création d'image, et revenir à la manipulation des demandes / réponses? Je n'ai aucun problème de laisser l'utilisateur qui crée l'image d'attente, mais je ne veux pas que d'autres à effet peuples l'accès au site.

Était-ce utile?

La solution

Je vais dire non -. Pour l'instant

  • Un couple de seconde est pas si longtemps.
  • Vous aurez de toute façon avoir à mettre en œuvre pour nourrir l'arrière de l'image à l'utilisateur une sorte de vote (ou traitement comète).
  • Il rendra votre système plus complexe.
  • Concevoir le système afin d'ajouter une file d'attente des tâches plus tard est possible et facile.

Alors, restez simple d'abord et le faire fonctionner, mais il faut garder à l'esprit que vous pouvez ajouter une file d'attente des tâches plus tard.

Mettre en œuvre cette file d'attente des tâches lorsque / si vous avez besoin à l'échelle.

Autres conseils

J'ai un site de génération d'images et ( Names4Frames ) et a fait des choses comme cela via AJAX (et PHP). Je ne l'ai pas eu de ralentissements notables (ou chiots morts), mais le site en question ne génère pas d'énormes quantités de trafic non plus. Je ne suis pas un expert sur les discussions, et pour être honnête, je ne suis pas 100% sûr de ce que votre préoccupation est exacte et quelles technologies vous utilisez ...

Au fond ont une demande de page l'image à partir d'une autre page (peut-être même situé sur un autre serveur), et quand il a fait la deuxième page passe à la première toute information pertinente sur l'image à des fins de traitement / affichage. Si l'on ne parle que de quelques secondes, je ne vois pas que d'être un vrai problème, à moins que vous avez affaire avec des quantités de visiteurs MASSIVES constamment en utilisant ce service de création d'images.

règle générale:. Utiliser une file d'attente si les tâches peuvent empiler

Dans votre cas, la tâche pourrait prendre jusqu'à 2 secondes, en supposant huit heures par jour, vous pouvez faire jusqu'à 8 * 60 * 60/2 = 14400 images par jour sans concurrence. Si vous obtenez plus de 7200 demandes par jour, vous avez une chance de 50% de l'un d'eux qui se chevauchent. Il y a une analyse plus sophistiquée pour montrer le niveau attendu de vous êtes susceptible de se chevaucher; mais il semble sûr de dire que vous pouvez faire plus d'un millier d'images par jour avant d'être surchargé.

Maintenant, la question semble plus facile: Pensez-vous que vous aurez plus d'un millier ou deux créations d'image un jour à tout moment bientôt? Si oui, puis définissez une file d'attente; sinon, laissez-le pour plus tard.

Dans tous les cas, gardez bien les journaux; assurez-vous que vous pourriez dire quand il y a un chevauchement de traitement. Rappelez-vous qu'une fois que vous obtenez deux tâches de traitement en même temps, ils prennent plus de temps, les probabilités de plus en plus qu'un troisième pourrait arriver avant de terminer les deux autres, et un quatrième ... quand vous arrivez à un seuil invisible, la performance va chuter de manière drastique. Ne pas dormir sur ce lose, ne laissez pas se produire avant que vous remarquez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top