是否启用KeepAlive?


9

在流量大的Magento网站上进行KeepAlive的共识是什么?他们声称,似乎大多数人都建议使用它,但随后Magento声明在使用Magento Enterprise Edition最大化性能和可扩展性时将其保留

“当Web服务器承受高负载时,保持持久连接变得不利,因此应始终禁用KeepAlive指令”

有什么想法吗?

Answers:


4

好问题!

传统上,KeepAlive是一件好事,因为它可显着减少整个页面加载的TCP开销,在该页面加载中,许多请求(如所有图像,css,js)都由一台服务器处理。如果您的页面有85个资产,那就是85个额外的三向TCP握手,并且延迟加起来。许多年前,Internet连接速度较慢,这比现在重要得多,尽管它对于移动浏览器或任何慢速/高延迟连接仍然很重要。

但是,这里提到的影响与这些TCP连接保持打开状态的时间有关,以及是否可能很快耗尽您的Apache子进程。我见过的大多数默认值是:

KeepAliveTimeOut 15
MaxClients 256

这意味着如果我在同一15秒内有256个不同的浏览器请求内容,则第257个客户端将不得不等待连接断开。不好-这根本不是很高的流量,因此可以解释该建议。它还可能导致增加MaxClients来应对,这可能会占用大量内存。当我确实使用KeepAlives时,通常将KeepAliveTimeout设置为2或3秒。它是请求之间的空闲时间,而不是所有请求的整个时间。

如果您使用的是KeepAlive,则在KeepAliveTimeout,MaxClients和服务器资源之间存在平衡。为了解决这个问题,“ service httpd / apache2 fullstatus”将向您显示KeepAlives随时使用的连接数-用大写的“ K”表示。

对于Magento而言,我认为您不需要KeepAlives。

如果企业站点的流量非常大,您应该怎么做,就是将CDN用于静态内容。

如果您在多个国家/地区进行销售,则使用CDN不仅可以为客户加快整体页面加载(这是不错的选择),而且可以大大减少到达服务器的带宽。“系统”>“配置”>“ Web”>“ [不]安全”下的设置使得集成用于媒体,外观和JavaScript的任何CDN确实很简单。这将是实际HTTP请求的大部分,此外,您可以使用不同的DNS记录来并行化主机名的下载。如果您做对了,那么这些请求将几乎不会影响您的服务器,因此不再有任何实际需要为KeepAlive。在这种情况下,您应该禁用KA。当我们知道其余内容正在从其他地方提供时,我们不想保持连接状态。如果您需要独立的CDN建议:CloudFlare太棒了,您甚至可以通过免费软件包获得SSL。

当使用这样的CDN时,或者如果您使用任何其他类型的反向代理(例如Varnish),则Apache HTTP KeepAlive本质上是无关的。

总而言之,我同意您应该禁用KeepAlive以避免在负载下使Apache进程饱和,但是绝对要对资产使用CDN或其他反向代理,以使页面加载尽可能快。


1
从CDN提取原点时,保持连接仍然有效。启用/禁用功能不应掉以轻心,应进行彻底测试。我主张减少请求,甚至在不考虑CDN的情况下就精简资产-配置不当,它们很容易使商店变慢,而不是变快。
Ben Lessani-Sonassi

如何为XAMPP服务器设置此keepalive设置本地系统?
bhavin thummar's
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.