国产探花免费观看_亚洲丰满少妇自慰呻吟_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。這將節省出為動態加載模塊而分配的內存。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 仁布县| 龙山县| 深水埗区| 丘北县| 新晃| 临汾市| 德安县| 海安县| 大田县| 封丘县| 临泉县| 天津市| 黎平县| 七台河市| 江油市| 炎陵县| 宜良县| 塘沽区| 焉耆| 洮南市| 宜春市| 孝感市| 大余县| 隆林| 盈江县| 夏邑县| 乌兰察布市| 台东市| 琼海市| 南投县| 孟津县| 和龙市| 札达县| 双鸭山市| 磴口县| 海宁市| 法库县| 长兴县| 游戏| 万山特区| 广东省|