Apache 性能最优化分析(11)
作者 佚名技术
来源 服务器技术
浏览
发布时间 2012-07-06
所有静态文件使用mmap: mmap(0, 6144, PROT_READ, MAP_PRIVATE, 4, 0) = 0x400ee000 ... munmap(0x400ee000, 6144) = 0 在一些系统上mmap小文件的效率不如直接读取该文件。宏MMAP_THRESHOLD用来设置应用mmap时的最小文件尺寸。缺省值是0(但在SunOS4上的缺省值是8129。实验证明这个值在该系统上比较理想)类似lmbench的工具可以帮助您在您的系统上进行优化设置。 您也许乐意在MMAP_SEGMENT_SIZE上做个实验(缺省值32768)。它决定了被mmap的文件将以一次多少个字节写出。Apache只在每次write之间重置客户的超时时间,因此把这个值设得过大容易把带宽较窄的用户拒之门外--除非同时增加Timeout。 您的系统有可能根本不用mmap。如果是这样的话,定义USE_MMAP_FILES和HAVE_MMAP也许会奏效(如果它真的有效请告诉我们)。 Apache尽全力避免在内存中拷贝数据。对任何请求的首次写出都将借助writev合并头标及第一块数据: writev(3, [{"HTTP/1.1 200 OK\r\nDate: Thu, 11"..., 245},{"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 6144}], 2) = 6389 当进行HTTP/1.1块状编码时,Apache将生成最多为4个元素的writev。它的目标是将字节拷贝至内核,这是典型情况下必须做的事情(为了组装网络数据包)。2.0.31之前的Linux并不进行合并,而是为每个元素生成一个数据包。因此升级系统是一个好主意。定义NO_WRITEV将阻止这种合并,但将使得块状编码的性能很差。 日志文件的写入工作 write(17, "127.0.0.1 - - [10/Sep/1997:23:39"..., 71] = 71 能够被宏定义BUFFERED_LOGS推迟。这种情况下,在真正写入文件之前,最多PIPE_BUF个字节(POSIX标准定义的常量)的日志信息将被缓存。由于写入条目不是atomic的(就是说来自不同子进程的信息将混合在一起),因此跨越PIPE_BUF边界的条目不会被分割。当子进程终止时,Apache用出色的方式将缓存排空。 关键词:优化 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于Apache 性能最优化分析(11)的所有评论