![gzip 压缩是好是坏?](https://linux22.com/image/542202/gzip%20%E5%8E%8B%E7%BC%A9%E6%98%AF%E5%A5%BD%E6%98%AF%E5%9D%8F%EF%BC%9F.png)
我有一台服务器,目前在我的应用程序中执行大量处理,目标用户是那些拥有非常好的互联网连接的人。
从服务器发送的输出始终是文本/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 文件)。压缩通常对动态内容不利,因为开销会抵消任何潜在收益。