中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Apache的Access Log有什么作用

發布時間:2022-02-19 15:20:53 來源:億速云 閱讀:465 作者:iii 欄目:開發技術

今天小編給大家分享一下Apache的Access Log有什么作用的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

access_log為訪問日志,記錄所有對apache服務器進行請求的訪問,它的位置和內容由CustomLog指令控制,LogFormat指令可以用來簡化該日志的內容和格式

訪問日志

在Apache的Access Log中會看到很多如下的訪問日志:

127.0.0.1 - - [05/May/2011:10:54:07 +0800] "OPTIONS * HTTP/1.0" 200 -
127.0.0.1 - - [05/May/2011:10:54:08 +0800] "OPTIONS * HTTP/1.0" 200 -
127.0.0.1 - - [05/May/2011:10:54:09 +0800] "OPTIONS * HTTP/1.0" 200 -
127.0.0.1 - - [05/May/2011:10:54:10 +0800] "OPTIONS * HTTP/1.0" 200 -

這是什么意思呢?

Apache的文檔的說明

Apache的文檔中, 有如下的說明:

When the Apache HTTP Server manages its child processes, it needs a way to wake up processes that are listening for new connections. To do this, it sends a simple HTTP request back to itself. This request will appear in the access_log file with the remote address set to the loop-back interface (typically 127.0.0.1 or ::1 if IPv6 is configured). If you log the User-Agent string (as in the combined log format), you will see the server signature followed by “(internal dummy connection)” on non-SSL servers. During certain periods you may see up to one such request for each httpd child process.

可是,為什么要喚醒呢? 喚醒是為了做什么呢?

Apache的Access Log有什么作用

在Apache Prefork模式下, 啟動的時候,Apache就會fork出一些worker進程, 來準備接受請求, 這些worker進程,在完成準備工作以后, 就會進入block模式的監聽沉睡中, 等待請求到來而被喚醒。

另外一方面, 在Prefork模式下, 當請求很多, 目前的worker進程數不夠處理的時候, 就會額外再fork一些worker進程出來, 以滿足當前的請求。

而在這些請求高峰過后, 如果額外fork出來的進程數大于了MaxSpareServers, Apache就會告訴這些worker進程退出, 那么問題就來了。

這些進程都在沉睡中啊, 怎么告訴他們, 并且讓他們自我退出呢?

自我退出

Apache會首先發送一個退出狀態字(GRACEFUL_CHAR !)給這些Work進程:

static apr_status_t pod_signal_internal(ap_pod_t *pod)
{
   apr_status_t rv;
   char char_of_death = '!';
   apr_size_t one = 1;

   rv = apr_file_write(pod->pod_out, &char_of_death, &one);
   if (rv != APR_SUCCESS) {
       ap_log_error(APLOG_MARK, APLOG_WARNING, rv, ap_server_conf,
                    "write pipe_of_death");
   }

.    return rv;
}

但此時, Worker進程不會去讀這些狀態字, 因為他們還在沉睡。

這個時候Apache就會發送一個OPTIONS請求給自己, 喚醒這些沉睡的進程:

static apr_status_t dummy_connection(ap_pod_t *pod)
{
//...有省略
   /* Create the request string. We include a User-Agent so that
    * adminstrators can track down the cause of the odd-looking
    * requests in their logs.
    */
   srequest = apr_pstrcat(p, "OPTIONS * HTTP/1.0\r\nUser-Agent: ",
                          ap_get_server_banner(),
                          " (internal dummy connection)\r\n\r\n", NULL);
//...有省略
}

這些進程在處理完當前請求以后(OPTIONS請求), 就會發現, oh, 主進程讓我退出。

static void child_main(int child_num_arg)
{
//...有省略

   while (!die_now && !shutdown_pending) {
//...有省略
       //1. listen
       //2. accept
      //3. process request

       /* Check the pod and the generation number after processing a
        * connection so that we'll go away if a graceful restart occurred
        * while we were processing the connection or we are the lucky
        * idle server process that gets to die.
        */
       if (ap_mpm_pod_check(pod) == APR_SUCCESS) { /* selected as idle? */
           die_now = 1;
       }
//...有省略
  }
//...有省略
}

以上就是“Apache的Access Log有什么作用”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新沂市| 页游| 南雄市| 社旗县| 大同市| 灵武市| 鄯善县| 通化县| 定陶县| 于都县| 含山县| 虹口区| 新巴尔虎左旗| 德化县| 五家渠市| 馆陶县| 靖西县| 江油市| 堆龙德庆县| 布拖县| 耿马| 光泽县| 昭通市| 卫辉市| 和林格尔县| 平湖市| 开鲁县| 延边| 建湖县| 南陵县| 余姚市| 广昌县| 静海县| 嘉鱼县| 环江| 竹山县| 南川市| 历史| 宁河县| 当雄县| 文昌市|