Apache 性能最优化分析(12)

王朝厨房·作者佚名  2007-01-02
窄屏简体版  字體: |||超大  

延迟关闭引发了四个系统调用:

shutdown(3, 1 /* send */) = 0

oldselect(4, [3], NULL, [3], {2, 0}) = 1 (in [3], left {2, 0})

read(3, "", 2048) = 0

close(3) = 0

这些在前文已经提及。

当我 们使用了-DSINGLE_LISTEN_UNSERIALIZED_ACCEPT、-DBUFFERED_LOGS 和 ExtendedStatus Off 的优化参数后,最终得到的跟踪结果如下:

accept(15, {sin_family=AF_INET, sin_port=htons(22286), sin_addr=inet_addr("127.0.0.1")}, [16]) = 3

sigaction(SIGUSR1, {SIG_IGN}, {0x8058c98, [], SA_INTERRUPT}) = 0

getsockname(3, {sin_family=AF_INET, sin_port=htons(8080), sin_addr=inet_addr("127.0.0.1")}, [16]) = 0

setsockopt(3, IPPROTO_TCP1, [1], 4) = 0

read(3, "GET /6k HTTP/1.0\r\nUser-Agent: "..., 4096) = 60

sigaction(SIGUSR1, {SIG_IGN}, {SIG_IGN}) = 0

time(NULL) = 873961916

stat("/home/dgaudet/ap/apachen/htdocs/6k", {st_mode=S_IFREG|0644, st_size=6144, ...}) = 0

open("/home/dgaudet/ap/apachen/htdocs/6k", O_RDONLY) = 4

mmap(0, 6144, PROT_READ, MAP_PRIVATE, 4, 0) = 0x400e3000

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

close(4) = 0

time(NULL) = 873961916

shutdown(3, 1 /* send */) = 0

oldselect(4, [3], NULL, [3], {2, 0}) = 1 (in [3], left {2, 0})

read(3, "", 2048) = 0

close(3) = 0

sigaction(SIGUSR1, {0x8058c98, [], SA_INTERRUPT}, {SIG_IGN}) = 0

munmap(0x400e3000, 6144) = 0

只剩下19个系统调用了。其中有四个很容易被移走,但没有什么必要了。

附录:可用的补丁

这里有一些1.3版的性能补丁。但随着1.3.0版的发行它们可能有些过时。对掌握一点C语言的知识的人来说,升级它们并不是难事。特别地:

有一个补丁去掉所有time(2)系统调用。

有一个补丁去掉mod_include中的许多系统调用,它们仅出于向后兼容而被少数站点所使用。

有一个补丁结合了上面两个特性,并通过去掉一些特性使服务器加速。

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