在任何默认安装中,Apache 2都关闭了keepAlive,但是在另一台服务器上,keepAlive模块已打开。
那么,我怎么知道keepAlive是否适合我?在哪里可以找到一些有关配置此配置的好的示例?
在任何默认安装中,Apache 2都关闭了keepAlive,但是在另一台服务器上,keepAlive模块已打开。
那么,我怎么知道keepAlive是否适合我?在哪里可以找到一些有关配置此配置的好的示例?
Answers:
已经有2个好的答案,但是可能没有提到现实生活中最重要的问题。
首先,OP可能需要阅读前面的2个答案和此小博文,以了解什么是keepalive。(作者并未详细说明打开连接的时间越长,TCPI / IP就会“更快”。的确,持久的连接受益于IP窗口缩放,但是除非文件被压缩,否则效果并不明显。较大,或者带宽延迟积很大。)
使用Apache时反对HTTP Keepalive的一个主要论点是它阻止了Apache进程。也就是说,使用keepalive的客户端将阻止“他的” Apache进程为其他客户端提供服务,直到该客户端关闭连接或达到超时为止。在相同的时间范围内,该Apache实例可以提供许多其他连接。
现在,非常常见的Apache配置是Prefork MPM和PHP / Perl / Python解释器以及上述语言的应用程序代码。在这种情况下,每个Apache进程都占用大量MB RAM(与解释器和应用程序代码链接的Apache),这意味着它“繁重”。这与阻止每个keepalive'd Apache实例一起使用,效率很低。
常见的解决方法是使用具有不同配置的2台Apache服务器(根据需要在同一台物理服务器上或在2台服务器上):
然后,您可以根据需要扩展动态和静态内容的分离,例如:
避免阻塞Apache的另一种方法是使用具有更智能连接处理的负载平衡器,例如Perlbal。
.. 以及更多。:-)
您绝对应该使用KeepAlive On。
看到:
http://httpd.apache.org/docs/2.0/mod/core.html#keepalive
这样,浏览器将重新使用单个TCP连接来发送多个查询。通常,网站具有许多组件(HTML页面,javascript代码,图像)。只要这些资源位于同一域中,因此可以由同一服务器提供服务,由于浏览器无需建立新的TCP连接,因此KeepAlive连接可以极大地提高性能。
浏览器通常会打开大约3个与域的并行连接。假设您的网站中有18个对象。浏览器将打开3个连接,并使用KeepAlive模式在每个连接中下载6个对象。如果没有KeepAlive,则必须打开18个TCP连接,这非常慢。
大多数或所有现代浏览器都符合HTTP / 1.1,因此应该可以使用。
某些HTTP代理(例如Squid)不符合HTTP / 1.1,但无论如何它们都要求使用KeepAlive连接。