![调整 Apache 和服务器以进行大量照片上传](https://linux22.com/image/545488/%E8%B0%83%E6%95%B4%20Apache%20%E5%92%8C%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%BB%A5%E8%BF%9B%E8%A1%8C%E5%A4%A7%E9%87%8F%E7%85%A7%E7%89%87%E4%B8%8A%E4%BC%A0.png)
我在 EC2 平台上运行了一个 Apache 网络服务器。它接收大量来自用户的上传(大图片文件)。
问题是上传后我必须立即将图像转换为其他尺寸,因为它们必须在“下一页”中使用。
我选择了 ImageMagick,因为我注意到 Flickr 也在使用它(http://highscalability.com/flickr-architecture),生成所有照片尺寸大概需要4秒。
当我有 50 个或更多并发用户时,就会出现问题。我做过压力测试,服务器开始变慢。
那么,您知道如何调整 Apache 以进行大量上传吗?
有什么想法可以更快地完成所有事情吗?
答案1
听起来你的问题不是 Apache,而是试图执行并发图像处理作业时服务器的负载。鉴于此,无论你如何调整 Apache,随着越来越多的用户使用你的服务,你的性能仍然会变得更差。
第一个建议是将图像卸载到一组机器上,进行专门的图像处理。这比扩充 Web 服务器来尝试处理大规模图像处理更具可扩展性。
答案2
Imagemagick
我们遇到了类似的问题,并想出了通过重新编译选项来提高性能,--disable-openmp
该选项由于内部线程(未使用/不需要)导致 CPU 高压。
在寻找答案之后,我进入了以下线程,它指示我禁用上述功能,我相信它会提高您创建图像的性能。
http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=14307
答案3
获得更强大的 CPU 能力、更多内存 (RAM) - 图像调整大小是一项计算密集型且通常占用大量内存的操作,如果您执行此类操作过多,则需要更强大的硬件规格。
如果您对单个图像执行多次调整大小,请尝试确保按大小递减的顺序执行,以便您可以使用较小的源图像执行以后的调整大小(前提是这能提供可接受的质量)。
答案4
也许您应该重新编译 ImageMagick 以仅使用 Q8(8 位通道深度)。如果使用 JPEG 文件,这可能会导致性能大幅提升,因为将使用更少的内存。