Apache 性能最優化分析(3)_Windows教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!
      四. 關于編譯時設置

        1) mod_status 和 ExtendedStatus On

        如果在編譯Apache時您包含了mod_status并且將ExtendedStatus設置為On,Apache將為每個請求進行兩次gettimeofday(2)系統調用(或者針對不同的系統調用times(2))及(在1.3以前的版本)許多次time(2)。這些都是為了在報告中含有時間戳。為了得到最佳性能,請將ExtendedStatus設為Off(這是缺省的設置)。

        2) 多socket中的accept 串行化

        這部分文章將討論Unix socket API不利的一方面。假設您的服務器用多個Listen命令偵聽多個端口或者多個IP地址。Apache使用select(2)檢測每個socket連接(connection)是否就緒。select(2)示意有零個或至少一個連接等待某個socket。Apache含有多個子進程,所有空閑的子進程同時偵聽新的連接。原始的實現如下所示(這個例子不是真正的代碼,它出于教學目的被簡化了)

      for (;;) {
      for (;;) {
      fd_set accept_fds;

      FD_ZERO (&accept_fds);
      for (i = first_socket; i <= last_socket; ++i) {
      FD_SET (i, &accept_fds);
      }
      rc = select (last_socket+1, &accept_fds, NULL, NULL, NULL);
      if (rc < 1) continue;
      new_connection = -1;
      for (i = first_socket; i <= last_socket; ++i) {
      if (FD_ISSET (i, &accept_fds)) {
      new_connection = accept (i, NULL, NULL);
      if (new_connection != -1) break;
      }
      }
      if (new_connection != -1) break;
      }
      process the new_connection;
      }

      來源:網絡搜集//所屬分類:Windows教程/更新時間:2013-04-15
      相關Windows教程