2008-10-25 9 views
1

J'ai un site vers lequel les utilisateurs téléchargent des images. Ces images sont redimensionnées à différentes dimensions. Je le fais actuellement sur mon serveur, mais je pensais à le traiter sur AWS ou quelque chose de similaire. est-ce une bonne idée?Comment redimensionner les images hors serveur

Répondre

0

Vous pouvez utiliser un serveur EC2 pour faire le redimensionnement et les stocker dans S3 si vous prévoyez la nécessité d'une grande échelle et en charge. En fin de compte, cela dépendrait de beaucoup de facteurs en fonction de votre croissance et votre budget. Quelle est la charge actuelle sur votre serveur et êtes-vous proche de la capacité? Quelle est la taille et la quantité de CPU nécessaire pour redimensionner les images et peuvent-elles être mises en cache et réutilisées? Comment les images sont-elles utilisées?

2

Vous avez besoin de comprendre combien il faut pour traiter vos images et combien vous anticipez le traitement.

Si votre serveur peut les traiter en temps réel avec votre charge de pointe, ne vous inquiétez pas pour le moment.

Je dirais que si votre serveur peut gérer la charge, mais pas en temps réel, je construirais une file d'attente sur le serveur et un travail cron ou un démon traiterait les images en dehors de la requête. Si la file d'attente commence à croître ou si votre serveur commence à être surchargé, vous pouvez le déplacer vers une autre machine.

Si cette autre machine ne peut pas gérer la charge, vous devriez pouvoir, un peu facilement, ajouter plus de machines pour traiter la file d'attente.

À ce moment-là, vous êtes probablement assez sophistiqué et vous pouvez commencer à tirer profit de EC2 pour des choses comme mise à l'échelle de la demande.

6

Je l'ai utilisé EC2 et des serveurs dédiés pour des tâches similaires, et voici quelques conseils:

  1. Utilisez aussi peu que possible IO. Si vous avez l'intention d'utiliser des éléments comme ImageMagick, sachez que l'écriture sur disque est une perte de ressources io (sauf si vous voulez le mettre en cache de toute façon.) PHP/GD vous permet d'envoyer jpeg directement dans la réponse http.

  2. RAM libre le plus tôt possible: source de presse et les images redimensionnées à chaque fois que vous le pouvez. Éliminez les chances de votre serveur d'échanger de la mémoire. EC2 est extrêmement lent avec les commutateurs de contexte. Alors essayez le moins possible. Les processeurs comme Gimp sont extrêmement lents (une réduction de 0,2 secondes sur dédié, a pris 7 secondes sur EC2). En outre, ImageMagick est extrêmement lent, point final. Si vous le pouvez, utilisez PHP/GD pour tout votre traitement.

  3. N'oubliez pas de définir la mémoire maximale. Vous aurez besoin de deux copies de l'image en mémoire (source et réduite.)

  4. Last but not least: commencer avec le temps réel. Ne commencez pas avec une solution trop lourde de files d'attente mysql et de démons externes. Ceux-ci s'avéreront difficiles à maintenir à long terme. Essayez donc en temps réel avant de construire une fusée.

Bonne chance!

Questions connexes