Apache 性能最優化分析(10)_Windows教程
教程Tag:暫無Tag,歡迎添加,賺取U幣!
為了實現虛擬主機,Apache需要用本地socket地址接受連接:
getsockname(3, {sin_family=AF_INET, sin_port=htons(8080), sin_addr=inet_addr("127.0.0.1")}, [16]) = 0
在許多情況下都有可能去掉這個調用(比如沒有虛擬主機,或者在Listen命令中的地址不含通配符)。但目前尚未對此進行優化。
Apache關掉了Nagle算法:
setsockopt(3, IPPROTO_TCP1, [1], 4) = 0
考慮到John Heidemann的論文中提及的問題,請關注兩個time調用:
time(NULL) = 873959960
...
time(NULL) = 873959960
第一個出現在請求的開始,另一個用于寫入日志。前者是正確實現HTTP協議所必須的,后者的出現是因為通用日志格式指定了記錄中包含時間戳。自定義日志模塊能夠去掉這個調用。或者您可以用某些方法把時間移到共享內存中。參見補丁一節。
正如前文描述的那樣,ExtendedStatus On將引發兩次gettimeofday調用和一次times調用:
gettimeofday({873959960, 404935}, NULL) = 0
...
gettimeofday({873959960, 417742}, NULL) = 0
times({tms_utime=5, tms_stime=0, tms_cutime=0, tms_cstime=0}) = 446747
ExtendedStatus Off (即缺省值)將避免這些調用。
這個調用看起來也許有些奇怪:
stat("/home/dgaudet/ap/apachen/htdocs/6k", {st_mode=S_IFREG|0644, st_size=6144, ...}) = 0
它用于生成CGI程序所需的PATH_INFO環境變量。事實上,對于指向/cgi-bin/printenv/foobar的某個請求,stat將被調用兩次。第一次調用查詢/home/dgaudet/ap/apachen/cgi-bin/printenv/foobar,但它并不存在;第二次調用查詢/home/dgaudet/ap/apachen/cgi-bin/printenv,它是存在的。無論如何,對于靜態請求而言,至少需要一次調用。文件尺寸和修改時間被用來生成HTTP頭標(比如Content-Length和Last-Modified)并用來實現協議的特色部分(比如If-Modified-Since)。一個聰明的服務器能夠對非靜態的請求避免調用stat,但是這樣的實現對于模塊化的Apache來說太難了。
getsockname(3, {sin_family=AF_INET, sin_port=htons(8080), sin_addr=inet_addr("127.0.0.1")}, [16]) = 0
在許多情況下都有可能去掉這個調用(比如沒有虛擬主機,或者在Listen命令中的地址不含通配符)。但目前尚未對此進行優化。
Apache關掉了Nagle算法:
setsockopt(3, IPPROTO_TCP1, [1], 4) = 0
考慮到John Heidemann的論文中提及的問題,請關注兩個time調用:
time(NULL) = 873959960
...
time(NULL) = 873959960
第一個出現在請求的開始,另一個用于寫入日志。前者是正確實現HTTP協議所必須的,后者的出現是因為通用日志格式指定了記錄中包含時間戳。自定義日志模塊能夠去掉這個調用。或者您可以用某些方法把時間移到共享內存中。參見補丁一節。
正如前文描述的那樣,ExtendedStatus On將引發兩次gettimeofday調用和一次times調用:
gettimeofday({873959960, 404935}, NULL) = 0
...
gettimeofday({873959960, 417742}, NULL) = 0
times({tms_utime=5, tms_stime=0, tms_cutime=0, tms_cstime=0}) = 446747
ExtendedStatus Off (即缺省值)將避免這些調用。
這個調用看起來也許有些奇怪:
stat("/home/dgaudet/ap/apachen/htdocs/6k", {st_mode=S_IFREG|0644, st_size=6144, ...}) = 0
它用于生成CGI程序所需的PATH_INFO環境變量。事實上,對于指向/cgi-bin/printenv/foobar的某個請求,stat將被調用兩次。第一次調用查詢/home/dgaudet/ap/apachen/cgi-bin/printenv/foobar,但它并不存在;第二次調用查詢/home/dgaudet/ap/apachen/cgi-bin/printenv,它是存在的。無論如何,對于靜態請求而言,至少需要一次調用。文件尺寸和修改時間被用來生成HTTP頭標(比如Content-Length和Last-Modified)并用來實現協議的特色部分(比如If-Modified-Since)。一個聰明的服務器能夠對非靜態的請求避免調用stat,但是這樣的實現對于模塊化的Apache來說太難了。
相關Windows教程:
- 相關鏈接:
- 教程說明:
Windows教程-Apache 性能最優化分析(10)
。