国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > Apache > 正文

Apache 性能最優化分析(7)

2024-08-27 18:25:57
字體:
來源:轉載
供稿:網友
有兩種實現這個特性的辦法:一是socket的SO_LINGER選項。但似乎是命中注定,在多數TCP/IP協議棧中它從來不能正確地實現。即使是在提供了正確實現的平臺(即Linux 2.0.31)上,這種方法也要比第二種方法代價(指CPU時間)高得多。

  大多數情況下,Apache在一個叫lingering_close的函數中實現了它(在 http_main.c)。這個函數大致如下所示:

void lingering_close (int s)
{
char junk_buffer[2048];

/* shutdown the sending side */
shutdown (s, 1);

signal (SIGALRM, lingering_death);
alarm (30);

for (;;) {
select (s for reading, 2 second timeout);
if (error) break;
if (s is ready for reading) {
read (s, junk_buffer, sizeof (junk_buffer));
/* just toss away whatever is here */
}
}

close (s);
}

  這自然增加了連接結束時的開銷,但它是可靠的實現所必需的。隨著HTTP/1.1的日益盛行,所有連接都是持久的,這種開銷將被眾多的連接請求抵消。如果您想冒險禁止這一特性的話,可以定義宏NO_LINGCLOSE,但這顯然是不被推薦的。實際上,由于在HTTP/1.0中持久的管道式連接越來越普遍,lingering_close幾乎是必須的選擇。(管道式連接非常高效,所以您還是希望支持它的吧)

  5) 記分板文件

  Apache利用一種叫做記分板(scoreboard)的技術在父、子進程間通訊。它的理想實現是在共享內存中。有的操作系統允許我們直接訪問共享內存,或者提供它們的確切端口。在這些系統中的典型實現就是共享內存記分板。其他的系統則將磁盤上的文件作為缺省實現。磁盤文件不僅低效而且不穩定(又沒有什么優勢)。請為您的操作系統仔細閱讀src/main/conf.h文件,并在其中尋找USE_MMAP_SCOREBOARD或者USE_SHMGET_SCOREBOARD。定義它們之一(以及相應的HAVE_MMAP和HAVE_SHMGET)將允許Apache使用共享內存。如果您系統的內存共享機制與眾不同,請編輯src/main/http_main.c并增加Apache所需的掛鉤函數(同時請把補丁寄給我們)

  注:直到1.2版,Apache的Linux版才開始使用共享內存。這一疏忽使得以前版本的Apache在Linux上表現得很不理想。

  DYNAMIC_MODULE_LIMIT

  如果您不打算支持動態加載模塊的話(準備榨出最后一滴性能的您可能希望如此),編譯服務器時請設定參數-DDYNAMIC_MODULE_LIMIT=0。這將節省出為動態加載模塊而分配的內存。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 北流市| 都昌县| 北川| 内黄县| 长岭县| 荥阳市| 卢湾区| 寿宁县| 连州市| 四川省| 施秉县| 大悟县| 呼和浩特市| 桦南县| 南召县| 泽州县| 蓬莱市| 陇南市| 阜宁县| 贵德县| 太湖县| 沂水县| 兴山县| 胶州市| 庆云县| 泗阳县| 克什克腾旗| 新余市| 龙泉市| 安义县| 三亚市| 赣州市| 兴隆县| 曲麻莱县| 仁怀市| 汾阳市| 龙游县| 炉霍县| 泽普县| 浮山县| 吴桥县|