2

我有一个用户上传图片的网站。这些图像被调整为各种尺寸。我目前在我的服务器上这样做,但正在考虑在 AWS 或类似的东西上处理它。这是一个好主意吗?

4

3 回答 3

7

我一直在使用 EC2 和专用服务器来完成类似的任务,这里有一些提示:

  1. 使用尽可能少的 IO。如果您打算使用 ImageMagick 之类的东西,请知道写入磁盘是浪费 io 资源(除非您想缓存它。) PHP/GD 允许您直接在 http 响应中发送 jpeg。

  2. 尽快释放 RAM:尽可能释放源图像和调整大小的图像。消除服务器换出内存的机会。

  3. EC2 的上下文切换非常慢。所以尽量少尝试。像 Gimp 这样的处理器非常慢(专用的缩减需要 0.2 秒,EC2 需要 7 秒。)此外,ImageMagick 非常慢。如果可以,请使用 PHP/GD 进行所有处理。

  4. 记得设置最大内存。您将需要内存中图像的两个副本(源和按比例缩小。)

  5. 最后但同样重要的是:从实时开始。不要从 mysql 队列和外部守护进程的过度杀伤解决方案开始。从长远来看,这些将难以维持。所以在你建造火箭之前先试试看。

祝你好运!

于 2008-10-27T00:03:23.377 回答
2

您需要弄清楚处理图像需要多少时间以及您预计处理多少。

如果您的服务器可以在您的峰值负载下实时处理它们,那么现在不要担心。

我想说,如果你的服务器可以处理负载,但不是实时的,我会在服务器上建立一个队列,让一个 cron 作业或守护进程处理请求之外的图像。如果队列开始增长或您的服务器开始过载,您可以将其移动到另一台机器上。

如果另一台机器无法处理负载,您应该能够稍微轻松地添加更多机器来处理队列。

那时,您可能已经相当成熟,可以开始利用 EC2 进行按需扩展等事情。

于 2008-10-25T15:33:10.730 回答
0

如果您预计需要大规模扩展和加载,您可以使用 EC2 服务器进行大小调整并将它们存储在 S3 中。最终,这将取决于很多因素,具体取决于您的增长和预算。您的服务器上的当前负载是多少,您是否接近容量?调整图像大小所需的 CPU 大小和数量是多少?它们可以被缓存和重用吗?图片是如何使用的?

于 2008-10-25T11:35:49.073 回答