gzip 压缩是好是坏?

gzip 压缩是好是坏?

我有一台服务器,目前在我的应用程序中执行大量处理,目标用户是那些拥有非常好的互联网连接的人。

从服务器发送的输出始终是文本/html,我们不使用任何媒体(音频/视频),只使用图像(静态站点图像,如徽标等)。

我们遇到了严重的性能问题,我想知道是否可以关闭服务器上的 gzip/mod_deflate,以便服务器避免压缩输出。这会导致性能改善吗?

答案1

理论上,禁用压缩应该可以释放一些 CPU,但无法确切说明释放了多少。最好的办法是使用 ApacheBench 或 siege 等基准测试应用程序,并在启用和禁用压缩的情况下测试服务器的功能。如果您的服务器负载很重,无法轻松进行基准测试,您可以尝试禁用压缩,看看 CPU 负载是否明显变化(监控应用程序会有所帮助)。

不过,根据经验,如果您处于由于高负载而必须禁用压缩的情况,那么您还必须考虑其他解决方案(更大的服务器、更多的服务器、不同的架构、应用程序优化等)。

答案2

对于文本/html,使用 gzip 通常是一件好事。问题是:性能问题到底是什么?它是由您的应用程序代码引起的,还是由 gzip 开销引起的?

根据我们的经验,gzip 会增加大约 %1-9 的 CPU 用户,超过我们应用程序的 CPU 使用率。换​​句话说,CPU 负载全部在我们的应用程序中。

另一个考虑因素是 SSL:如果您的 Web 服务器终止 SSL(具有 SSL 证书等),则此开销可能会相当可观。我们最近将 SSL 证书安装到我们的负载均衡器中,Web 服务器上的 CPU 使用率下降了近一半。(我们主要提供 REST API,因此 SSL 会一直重建以进行事务对话。)

我们的设置是 IIS 6 和 IIS 7,仅供参考,但以上内容适用于任何操作系统。

答案3

压缩对静态内容很有用(尚未压缩的内容也是如此,不要尝试重新压缩图像和 zip 文件)。压缩通常对动态内容不利,因为开销会抵消任何潜在收益。

相关内容