目前我们正在实时调整图片大小。我们的用户每天上传大约50K到100K的图像。我们的服务器以每周7天每天24小时的CPU使用率挂钩。页面加载时间很慢。 Ram不是问题。
我们有双cpu intel xeon L5630 2.13GHz 服务器,其中 24演出的ram。我们使用简单的图像大小调整脚本来制作原始图像的缩略图。但这最大限度地发挥了cpu的作用。
我想通过硬件和软件来解决这个问题。
在硬件方面,我们将订购另一台采用Dual Xeon 3GHz处理器的服务器。该服务器将从网站上单独处理图像处理。
在软件上,我想问一下有经验的人,他们使用什么样的软件来处理低CPU开销的图像。
任何想法都会受到赞赏。
答案 0 :(得分:1)
大多数大批量用户发现最好将上传直接发送到blob存储,未经修改,并根据请求动态调整大小。这种方法有很多好处(敏捷性,移动支持,控制),但主要是它可以降低资源利用率。大多数内容从未获得过眼球;为什么浪费资源呢?
看来你已经在查看我的软件ImageResizer,据我所知,这是.NET唯一的服务器友好选择。它还提供一系列管道,每个管道都有自己的权衡。 如果您想要原始速度,请使用WIC管道;我希望你会看到比当前脚本好10-20倍的性能。 WIC管道的质量不是完全和默认管道一样好,但它是2-4倍更快,你将无法区分大多数图像。
我帮助许多公司缩小了100万和1000万的图像障碍;有一些架构缺陷需要避免,但在这种规模下,深入了解您的需求是件好事。 Varnish或CDN是一种选择吗?这些可以极大地帮助缩小500像/秒的障碍。
答案 1 :(得分:0)
首先,他们需要实时处理吗? - 如果没有,你可以查看一个队列基础系统,该系统在当前服务器上实用其他服务器/安静时间来处理缩略图。
图像是仅调整一次大小,还是用户可以再次请求图像导致另一次调整大小? - 如果是这样,你需要查看缓存。
如果图像在一整天内展开,那么这些图像会被重新缩放以及有多少图像被一次处理?
在回发期间调整图像大小会导致页面加载时间延迟吗? - 如果是这样,他们将该指令添加到新线程将改善响应时间。
答案 2 :(得分:0)
首先,您有一个好主意将图像处理与主服务器分开。
最佳答案取决于您特定情况的更多细节:什么软件环境,用于调整图像大小的软件,配置方式等等。可能优化那里可以产生强大的速度提升。例如,是否有多个内核,可以使用基于GPU的处理吗?
也就是说,由于每个图像大小调整操作都独立于其他操作,因此有一个通用的解决方案。您可以根据需要在任意数量的服务器上轻松分发工作。构建一个(或更多,如果需要)额外的图像处理服务器。然后进行调整以分发调整大小请求。这可以在几个级别完成(Web客户端通过URL调用大小调整吗?随机化您发送给它们的URL中的服务器名称。是否调整业务层调用的大小?在那里随机化服务器名称。)。
如果您需要更具体的答案,请提供更多详细信息。