网站运营 | 站长学院 | 技术文档 | 成语 | 歇后语 | 桌面壁纸 | 帝国时代 | 代码收藏 | IP地址查询 | 生活百科 | 生日密码 | CSS压缩 | 用户评论

Apache 中 KeepAlive 配置的合理使用

【 网络 更新时间:2010-05-14 | 字体:
[导读]在 Apache 服务器中,KeepAlive 是一个布尔值>,On 代表打开,Off 代表关闭,这个指令在其他众多的 HTTPD 服务器中都是存在的>。   KeepAlive 配置指令决定当处理完用户发起的 HTTP 请求后是否立即关闭 TCP 连接>>,如...

  在 Apache 服务器中>,KeepAlive 是一个布尔值,On 代表打开,Off 代表关闭>,这个指令在其他众多的 HTTPD 服务器中都是存在的>。
  KeepAlive 配置指令决定当处理完用户发起的 HTTP 请求后是否立即关闭 TCP 连接>,如果 KeepAlive 设置为 On>,那么用户完成一次访问后>,不会立即断开连接>>,如果还有请求>,那么会继续在这一次 TCP 连接中完成>>,而不用重复建立新的 TCP 连接和关闭 TCP 连接>,可以提高用户访问速度。
  那么我们考虑3种情况:
  1。用户浏览一个网页时>,除了网页本身外>>>,还引用了多个 javascript 文件,多个 css 文件>,多个图片文件,并且这些文件都在同一个 HTTP 服务器上。
  2>。用户浏览一个网页时>,除了网页本身外,还引用一个 javascript 文件>,一个图片文件。
  3>。用户浏览的是一个动态网页>>>,由程序即时生成内容>,并且不引用其他内容>>。

  对于上面3中情况>,我认为:1 最适合打开 KeepAlive ,2 随意>>,3 最适合关闭 KeepAlive

  下面我来分析一下原因>。

  在 Apache 中,打开和关闭 KeepAlive 功能>,服务器端会有什么异同呢>?

  先看看理论分析。

  打 开 KeepAlive 后>,意味着每次用户完成全部访问后>>,都要保持一定时间后才关闭会关闭 TCP 连接,那么在关闭连接之前,必然会有一个 Apache 进程对应于该用户而不能处理其他用户,假设 KeepAlive 的超时时间为 10 秒种>,服务器每秒处理 50 个独立用户访问,那么系统中 Apache 的总进程数就是 10 * 50 = 500 个,如果一个进程占用 4M 内存>,那么总共会消耗 2G 内存>,所以可以看出>,在这种配置中,相当消耗内存,但好处是系统只处理了 50次 TCP 的握手和关闭操作>>>。
  如 果关闭 KeepAlive,如果还是每秒50个用户访问>,如果用户每次连续的请求数为3个>,那么 Apache 的总进程数就是 50 * 3 = 150 个>,如果还是每个进程占用 4M 内存>,那么总的内存消耗为 600M>,这种配置能节省大量内存,但是>,系统处理了 150 次 TCP 的握手和关闭的操作,因此又会多消耗一些 CPU 资源>>>。

  在看看实践的观察。

  我 在一组大量处理动态网页内容的服务器中>,起初打开 KeepAlive 功能>,经常观察到用户访问量大时Apache进程数也非常多,系统频繁使用交换内存,系统不稳定>,有时负载会出现较大波动>。关闭了 KeepAlive 功能后>,看到明显的变化是: Apache 的进程数减少了,空闲内存增加了>,用于文件系统Cache的内存也增加了,CPU 的开销增加了>,但是服务更稳定了>,系统负载也比较稳定,很少有负载大范围波动的情况>,负载有一定程度的降低>>;变化不明显的是:访问量较少的时候>,系统平均 负载没有明显变化。


  总结一下:
  在内存非常充足的服务器上>>,不管是否关闭 KeepAlive 功能>,服务器性能不会有明显变化;
  如果服务器内存较少>,或者服务器有非常大量的文件系统访问时,或者主要处理动态网页服务>,关闭 KeepAlive 后可以节省很多内存>,而节省出来的内存用于文件系统Cache>>>>,可以提高文件系统访问的性能,并且系统会更加稳定>。


  补充:
  关于是否应该关闭 KeepAlive 选项>,我觉得可以基于下面的一个公式来判断。

  在理想的网络连接状况下>,系统的 Apache 进程数和内存使用可以用如下公式表达:
HttpdProcessNumber = KeepAliveTimeout * TotalRequestPerSecond / Average(KeepAliveRequests)
HttpdUsedMemory = HttpdProcessNumber * MemoryPerHttpdProcess
  换成中文:
总Apache进程数 = KeepAliveTimeout * 每秒种HTTP请求数 / 平均KeepAlive请求
Apache占用内存 = 总Apache进程数 * 平均每进程占用内存数

  需要特别说明的是:
  [平 均KeepAlive请求] 数,是指每个用户连接上服务器后>>,持续发出的 HTTP 请求数。当 KeepAliveTimeout 等 0 或者 KeepAlive 关闭时,KeepAliveTimeout 不参与乘的运算从上面的公式看,如果 [每秒用户请求] 多,[KeepAliveTimeout] 的值大>,[平均KeepAlive请求] 的值小>>>,都会造成 [Apache进程数] 多和 [内存] 多,但是当 [平均KeepAlive请求] 的值越大时>>,[Apache进程数] 和 [内存] 都是趋向于减少的。
  基于上面的公式>,我们就可以推算出当 平均KeepAlive请求 <= KeepAliveTimeout 时>,关闭 KeepAlive 选项是划算的,否则就可以考虑打开。

友荐云推荐
  • 转载请注明来源:网站运营 网址:http://www.chinawobo.com/ 向您的朋友推荐此文章
  • 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载>>,但请务必注明出处和原始作者>>。文章版权归文章原始作者所有>。对于被本站转载文章的个人和网站,我们表示深深的谢意>。如果本站转载的文章有版权问题请联系我们,我们会尽快予以更正。
RSS订阅
  • QQ邮箱
  • 填写您的邮件地址,订阅我们的精彩内容:
更多
© 2014 网站运营 - T086.com(原itlearner.com)
  • 4月台州全市新建商品住宅成交3444套 2018-05-25
  • 河北盐山:“点、线、面”结合推进人才强县 2018-05-25
  • 北京市幼儿园年内完成全员培训 2018-05-25
  • 河南职业技术学院全国技能(导游类)大赛获佳绩 2018-05-24
  • Футбол -- Арены ЧМ-2018 -- Стадион Нижний Новгород 2018-05-24
  • 美媒:美国对华战略缺乏头脑 2018-05-23
  • 中国钢企布局沿海 柳钢瞄准东盟经济圈 2018-05-23
  • 2018的偶像元年是否只是一场美丽的谎言?偶像练习生创造101选秀 2018-05-22
  • 上海临港有个“儿童大学” 2018-05-20
  • 2017年世界大学学术排名发布 清华进前50大学学术排名大学排行榜 2018-05-20
  • 日本战犯侵华罪行自供 2018-05-19
  • 塑料污染让人痛心 世界最深海沟竟成“垃圾场” 2018-05-19
  • 男子因琐事杀害女友并分尸抛河 警方根据美甲破案嘉兴美甲死者 2018-05-18
  • 166名中国人在泰国操控中国股市被警方押扣审讯 2018-05-17
  • 消防车进商场——“小小消防员”的消防安全乐体验 2018-05-17
  • 微商货源 | 冠珠陶瓷 | 6688电视家官网 | 中康体检网 | 安徽极热网 | 北京赛车开奖号码 | 快猴网 | 迪威乐云商devmsn | 易奇八字 | wwe美国职业摔角 | 八字算命 | 河南旅游景点大全 | 冠珠陶瓷 | 广东旅游景点大全 |
    RunTime:7.10ms QueryTime:7