Apache 性能最优化分析(下)

来源:王朝搜索
 
Apache 性能最优化分析(1)

一. 简介 Apache是把正确性放在首位、把速度放在其次的通用Web服务器。即使这样,它的性能十分令人满意。许多站点只有不到10M的出口带宽。Apache能够在这些站点的低端Pentium服务器

Apache 性能最优化分析(12)

延迟关闭引发了四个系统调用: shutdown(3, 1 /* send */) = 0 oldselect(4, , NULL, , {2, 0}) = 1 (in , left

Apache 性能最优化分析(5)

USE_FLOCK_SERIALIZED_ACCEPT 此方法用flock(2)系统调用对一个锁文件加锁。(此文件在LockFile命令中指定) USE_FCNTL_SERIALIZED

Apache 性能最优化分析(4)

但这种实现会引起严重的饥饿问题。由于多个子进程同时执行这个循环,它们将在select中阻塞。当任何socket上出现一个请求时,所有被阻塞的进程将复苏,并从select返回(苏醒进程的数量取决于操作系

Apache 性能最优化分析(13)

附录:预分支(Pre-Forking)模型 Unix上的Apache是应用了预分支模型的服务器。父进程的责任仅在于繁衍子进程,它从不响应来自socket的任何请求。真正处理连接的是子进程,每个子

Apache 性能最优化分析(9)

accept串行化: flock(18, LOCK_UN) = 0 ... flock(18, LOCK_EX) = 0 这两个调用可以被上文提到的宏SINGLE_L

Apache 性能最优化分析(7)

有两种实现这个特性的办法:一是socket的SO_LINGER选项。但似乎是命中注定,在多数TCP/IP协议栈中它从来不能正确地实现。即使是在提供了正确实现的平台(即Linux 2.0.31)上,这种

Apache 性能最优化分析(10)

为了实现虚拟主机,Apache需要用本地socket地址接受连接: getsockname(3, {sin_family=AF_INET, sin_port=htons(8080), sin

Apache 性能最优化分析(8)

附录:对某次跟踪状况的详细分析 本附录描述了运行在Linux上的Apache 1.3系统调用的跟踪情况。运行时(run-time)配置文件中除了必要的缺省选项外还增加了: A

Apache 性能最优化分析(6)

3) 单socket中的accept串行化 以上言及的方案对多socket服务器是相当不错的,但只有一个socket的情况又如何呢?理论上,由于在连接请求到来之前所有子进程将阻塞在accept中,

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有