先来说说Apache的KeepAlive的设置。
KeepAlive在Apache Core中的设置说明:
Keep-Alive扩展自HTTP/1.0和HTTP/1.1的持久链接特性。提供了长效的HTTP会话,用以在同一个TCP连接中进行多次请求。在某些情况下,这样的方式会对包含大量图片的HTML文档造成的延时起到50%的加速作用。在Apache1.2版本以后,您可以设置 KeepAlive On 以启用持久链接。
对于HTTP/1.0的客户端来说,仅当客户端指定使用的时候才会使用持久链接连接。此外,仅当能够预先知道传输的内容长度时,才会与HTTP/1.0的客户端建立持久链接连接。这意味着那些长度不定的内容,诸如CGI输出、SSI页面、以及服务器端生成的目录列表等内容一般来说将无法使用与HTTP/1.0客户端建立的持久链接连接。而对于HTTP/1.1的客户端来说,如果没有进行特殊指定,持久将是默认的连接方式。如果客户端进行了请求,将使用分块编码以解决在持久链接里发送未知长度内容的问题。
另一个相关的是KeepAliveTimeout在Apache Core中的设置说明:
Apache在关闭持久连接前等待下一个请求的秒数。一旦收到一个请求,超时值将会被设置为Timeout指令指定的秒数。
对于高负荷服务器来说,KeepAliveTimeout值较大会导致一些性能方面的问题:超时值越大,与空闲客户端保持连接的进程就越多。
后最后还有一个相关的是MaxKeepAliveRequests在Core中的说明:
MaxKeepAliveRequests指令限制了当启用KeepAlive时,每个连接允许的请求数量。如果将此值设为"0",将不限制请求的数目。我们建议最好将此值设为一个比较大的值,以确保最优的服务器性能。
通过Apache的设置说明,我们已经能明白KeepAlive的原理。在对于一个包含许多图片的网页来说, 客户端会在瞬间发出多个HTTP请求,此时多次建立TCP连接会大大降低响应速度。 此时通过持续连接,可以允许用户在一个TCP连接中发出多个HTTP请求, 减少TCP连接建立次数,提高响应速度。我们可以通过access_log统计出连续HTTP请求出现的次数、间隔时间、访问量, 以确定 MaxKeepAliveRequests 和 KeepAliveTimeout 的值。 KeepAliveTimeout 太小发挥不了持续连接的作用;太大了,持续连接迟迟不断, 浪费TCP连接数不说,更糟糕的是系统中的 httpd 进程数目会因此不断增加, 使得系统负载升高,甚至会导致服务器失去响应。
但是当你的服务器只是在处理动态网页请求时,由于用户很少会瞬间请求多个动态网页 (一般都是打开页面之后阅读好半天才点下一页), 此时打开KeepAlive无异于浪费TCP连接数。
哪么什么决定着我们是不是要开启KeepAlive的因素就很简单的确定出来了,就是说在用户一个页面请求中是否会向服务器发出多个HTTP的请求。
对于我的哪个朋友,他们的服务器中有着动态应用,有着所有的图片,我看了一下,估算他们的首页中发出的请求类型为以下几种:text/html、text/css、application/octet-stream、text/javascript、image/gif、image/jpeg。一个首页发出了181次请求(我看了所有的请求,注意所有的请求都是同一个域名)。这里可能由应用程序生成的只有text/html和application/octet-stream,这种请求中text/html只有一次,而application/octet-stream也只有4次。哪么关闭KeepAlive对他们有帮助吗?我的回复是没有帮助,而且会让服务器的服务质量更差!
如果是这样的情况,怎么办呢?我的建议如下:
1.如果我们每一个页面中只有一个请求是动态生成的,而180个(里面可能有4个不是,不过不重要了)都是静态的,哪么应该将静态与动态分开到两个服务器上(一台机器都可以)。将动态应用的KeepLive关闭,将静态服务器的KeepLive打开。
2.前端前部署四层交换或七层交换或缓存服务器,这样会让系统的扩展做起来,同时也可以让服务器的KeepLive打开时有更好的效果。
3.应该考虑优化下他们的apache了,听说一个进程有高达xxM的内存占用,比较恐怖,在10M以内比较正常的说,不过这是一个option了。
分享到:
相关推荐
pache-cxf-2.2.2pache-cxf-2.2.2
藏经阁-A PACHE Spark Applications.pdf
sudo npm install pache -g 运行: pache site-directory 2000 感谢StackOverflow上的朋友 到目前为止只在 Mac 上测试过,但同时你可以在 SO 上找到一个 Linux 脚本 阻止所有缓存:在 apache 服务器的根目录添加...
让APACHE支持net的好东东,得好好研究下才行
说明文档,使用最新tomcat(apache-tomcat-6.0.20)和apache(apache_2.2.11)整合,自己测试过,整合成功
pache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展。 Apache和Tomcat都可以做为独立的web服务器来运行,但是Apache不能解释java程序(jsp,servlet)。
压力测试,性能测试软件,小巧好用。pache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源。
在使用pdfbox进行pdf转图片时,若转换后的图片出现文字丢失的情况,可以通过替换文件中的字体库到操作系统解决。
kafak 分布式 linux
文档是自己根据实际操作总结出来的,放心绝对全面、好用
该文档讲述了就meter压力测试的步骤、方法、以及jmeter的安装部署。以及压力测试指标的设置等相关内容
windows 64位下的apache2安装包版本2.4.29 ,用于搭建web服务器
一般测试网站的时候都要用这个东西~~还没有的朋友就要试试了~
官方原版apache-tomcat-8.5.51-windows-x64.zip 64位官方原版apache-tomcat-8.5.51-windows-x64.zip 64位
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。 Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,...
apache-tomcat-7.0.75-windows-x86解压版32位
ActiveMQ 5 的版本是不能在低于JDK1.5的环境下运行的,而实际开发过程中,大多数企业应用环境还是1.4的,故用字节码转换工具转了一份出来,专门提供给JDK1.4的用户使用,在此分享给大家。
Apache_OpenOffice
能有效解决你JavaEE项目乱码问题的Tomcat8.0,用这个部署运行你的项目即可,使用教程和官方版步骤一样
tomcat-7.0.42解压版,解压配置环境变量就可以用了