- 浏览: 7834529 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (2425)
- 软件工程 (75)
- JAVA相关 (662)
- ajax/web相关 (351)
- 数据库相关/oracle (218)
- PHP (147)
- UNIX/LINUX/FREEBSD/solaris (118)
- 音乐探讨 (1)
- 闲话 (11)
- 网络安全等 (21)
- .NET (153)
- ROR和GOG (10)
- [网站分类]4.其他技术区 (181)
- 算法等 (7)
- [随笔分类]SOA (8)
- 收藏区 (71)
- 金融证券 (4)
- [网站分类]5.企业信息化 (3)
- c&c++学习 (1)
- 读书区 (11)
- 其它 (10)
- 收藏夹 (1)
- 设计模式 (1)
- FLEX (14)
- Android (98)
- 软件工程心理学系列 (4)
- HTML5 (6)
- C/C++ (0)
- 数据结构 (0)
- 书评 (3)
- python (17)
- NOSQL (10)
- MYSQL (85)
- java之各类测试 (18)
- nodejs (1)
- JAVA (1)
- neo4j (3)
- VUE (4)
- docker相关 (1)
最新评论
-
xiaobadi:
jacky~~~~~~~~~
推荐两个不错的mybatis GUI生成工具 -
masuweng:
(转)JAVA获得机器码的实现 -
albert0707:
有些扩展名为null
java 7中可以判断文件的contenttype了 -
albert0707:
非常感谢!!!!!!!!!
java 7中可以判断文件的contenttype了 -
zhangle:
https://zhuban.me竹板共享 - 高效便捷的文档 ...
一个不错的网络白板工具
先来说说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了。
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了。
发表评论
-
windows下自带命令行工具查看CPU资源情况等
2018-06-04 12:53 3031微软提供了不少命令行 ... -
挂载文件系统选项nodiratime、noatime等集合小结
2018-06-02 19:56 2504Linux系统文件有三个主 ... -
Linux如何查看当前占用CPU或内存最多的K个进程
2018-05-20 11:01 3207内存 可以使用以下命令查使用内存最多的K个进程 方法1: p ... -
(转)使用frp实现内网穿透
2018-05-14 13:33 2431https://www.jianshu.com/p/e8e26 ... -
docker小结1
2018-05-11 14:26 4241 通过dockerfile建立一个简单的HELLO.C,然后 ... -
LINUX下EPOLL等不错的文章收藏
2018-04-25 09:35 4921 通俗讲解 异步,非阻塞和 IO 复用 https:/ ... -
Ubuntu中root用户和user用户的相互切换
2018-04-06 12:46 9701)从user用户切换到root用户 不管是用图形模式登录U ... -
ubuntu下Virtualbox虚拟Ubuntu共享文件夹设置
2018-04-06 11:41 9621. 安装增强功能包(Guest Additions) 安装 ... -
Web网站压力及性能测试
2017-10-09 19:59 640https://segmentfault.com/a/1190 ... -
工具推荐:Netdata,Linux性能实时监测工具
2017-07-14 09:10 1134工具推荐:Netdata,Linux性能实时监测工具 http ... -
一个 Linux 下基于 Bash 的文件和数据库监控及备份工具,可发送微信报警通知
2017-07-11 07:07 1599一个 Linux 下基于 Bash 的文件和数据库监控及备份工 ... -
收藏个不错的能发送日志等警告信息等到微信的工具
2017-06-11 10:12 1027发现个将比如报警日志呀之类的提醒信息,发送给微信的好的工具,不 ... -
收藏:nginx教程从入门到精通(ttlsa出品)
2017-02-09 22:53 675http://www.ttlsa.com/nginx/ngin ... -
(转)从dstat理解Linux性能监控体系
2016-08-02 10:27 2503http://calvin1978.blogcn.com/ar ... -
linux下安装SZ,RZ命令
2016-02-26 20:59 1604在 linux 下,一般用secur crt等工具,今天居然 ... -
Clumsy —— 帮你模拟各种网络不稳定的环境,包括掉包
2014-11-14 09:12 1704Clumsy —— 帮你模拟各种网络不稳定的环境,包括掉包、延 ... -
ping+tracerout的unix下网络诊断小工具mtr
2014-07-29 22:04 1557今日才发现,原来linux中可以用ping和tracerout ... -
(转)Apache日志分割
2014-02-25 20:20 1552Apache和Ngix一样,对日志没有进行分割处理,这样很不方 ... -
linux下 cpu频率节能
2014-02-25 13:06 1385参考: http://linux-wiki.cn/wiki/z ... -
(转)最佳日志实践
2014-01-22 23:24 909http://www.bitstech.net/2014/01 ...
相关推荐
问题描述在实际使用过程中,我们发现当负载均衡器的后端为Apache Web Server,启用了KeepAlive并且使用默认设置时(不同版本的Apache,K
TCP存活可以通过修改系统设置或者在tcp...设置keepalive之后,若tcp断开,则在使用该socket读写时立即失败。全部源代码,直接gcc命令就可以编译;运行本测试代码,然后拔掉主从之间的网线,主和从都可以检测到tcp断开。
springboot keepalive 服务端,客户端测试
优化了keepAlive的缓存机制, 可以像APP那样前进刷新, 返回销毁
Centos6.5安装keepalive步骤
mysql主主复制+keepalive 这是keepalive1.1.17.tar.gz
KeepAlive
MySQL MHA KEEPALIVE最佳部署指南
KEEPALIVE安装配置手册 REDIS集群配置 各种算法分析
keepalive--aarch64.rar
虽然Borland 今年新出的Delphi 7 开始支持Apache 2.0 版本,但是Delphi 6 只支持Apache 1.x 版本,而Delphi 7 发行的版本也只支持到Apache 2.0.39 版,对Apache 2.0.40 以后的版本无法支持,本文给出了让Delphi 6和...
判定断开前的KeepAlive探测次数舒服点
Keepalive+mysql主主同步图文教程
Gre keepalive Cisco document; And linux c code; Only for reference.
nginx1.9.7+keepalive1.3.2,可搭建Nginx可高用集群和自动故障转移
nginx+keepalive
主要用来研究GRE隧道技术的keepalive
keepalive的安装包,有需要keepalive低版本安装包的前来下载。 适用于mysql 5.6及以上版本,需要安装文档请继续等待了。
keepalive+lvs+mysql部署,mysql主备配置 !
centos7-lvs+keepalive部署.