首页 > 网站 > Apache > 正文

Apache 性能最优化分析(12)

2024-08-27 18:25:58
字体:
来源:转载
供稿:网友
延迟关闭引发了四个系统调用:

    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中的许多系统调用,它们仅出于向后兼容而被少数站点所使用。
  • 有一个补丁结合了上面两个特性,并通过去掉一些特性使服务器加速。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表