所有静态文件使用mmap: mmap(0, 6144, PROT_READ, MAP_PRIVATE, 4, 0) = 0x400ee000 ... munmap(0x400
一. 简介 Apache是把正确性放在首位、把速度放在其次的通用Web服务器。即使这样,它的性能十分令人满意。许多站点只有不到10M的出口带宽。Apache能够在这些站点的低端Pentium服务器
延迟关闭引发了四个系统调用: shutdown(3, 1 /* send */) = 0 oldselect(4, , NULL, , {2, 0}) = 1 (in , left
USE_FLOCK_SERIALIZED_ACCEPT 此方法用flock(2)系统调用对一个锁文件加锁。(此文件在LockFile命令中指定) USE_FCNTL_SERIALIZED
但这种实现会引起严重的饥饿问题。由于多个子进程同时执行这个循环,它们将在select中阻塞。当任何socket上出现一个请求时,所有被阻塞的进程将复苏,并从select返回(苏醒进程的数量取决于操作系
附录:预分支(Pre-Forking)模型 Unix上的Apache是应用了预分支模型的服务器。父进程的责任仅在于繁衍子进程,它从不响应来自socket的任何请求。真正处理连接的是子进程,每个子
accept串行化: flock(18, LOCK_UN) = 0 ... flock(18, LOCK_EX) = 0 这两个调用可以被上文提到的宏SINGLE_L
有两种实现这个特性的办法:一是socket的SO_LINGER选项。但似乎是命中注定,在多数TCP/IP协议栈中它从来不能正确地实现。即使是在提供了正确实现的平台(即Linux 2.0.31)上,这种
为了实现虚拟主机,Apache需要用本地socket地址接受连接: getsockname(3, {sin_family=AF_INET, sin_port=htons(8080), sin
附录:对某次跟踪状况的详细分析 本附录描述了运行在Linux上的Apache 1.3系统调用的跟踪情况。运行时(run-time)配置文件中除了必要的缺省选项外还增加了: A