最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

令Apache中沉睡的無用進程自動退出的方法

 更新時間:2015年06月19日 09:25:46   作者:Laruence  
這篇文章主要介紹了令Apache中沉睡的無用進程自動退出的方法,利用OPTIONS請求得以實現清理完成任務后的進程,需要的朋友可以參考下

在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 Prefork模式下, 啟動的時候,Apache就會fork出一些worker進程, 來準備接受請求, 這些worker進程,在完成準備工作以后, 就會進入block模式的監(jiān)聽沉睡中, 等待請求到來而被喚醒。

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

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

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

Apache會首先發(fā)送一個退出狀態(tài)字(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進程不會去讀這些狀態(tài)字, 因為他們還在沉睡。

這個時候Apache就會發(fā)送一個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請求), 就會發(fā)現, 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;
            }
    //...有省略
       }
    //...有省略
    }

于是, 它就做完清理工作, 然后自我消亡了~~~

相關文章

  • Linux下如何創(chuàng)建SFTP賬號

    Linux下如何創(chuàng)建SFTP賬號

    這篇文章主要介紹了Linux下如何創(chuàng)建SFTP賬號問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Centos 5下配置https服務器的方法

    Centos 5下配置https服務器的方法

    Centos 5下配置https服務器的步驟,需要的朋友可以參考下。
    2010-07-07
  • Apache虛擬主機的配置和泛域名解析實現代碼

    Apache虛擬主機的配置和泛域名解析實現代碼

    Apache虛擬主機的配置和泛域名解析實現代碼,需要的朋友可以參考下
    2012-03-03
  • Vmvare虛擬機給ubuntu根目錄分區(qū)介紹

    Vmvare虛擬機給ubuntu根目錄分區(qū)介紹

    大家好,本篇文章主要講的是Vmvare虛擬機給ubuntu根目錄分區(qū)介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Linux中如何查看usb設備信息

    Linux中如何查看usb設備信息

    這篇文章主要介紹了Linux中如何查看usb設備信息問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • CentOS 7 安裝 MySQL 5.6遇到的各種問題小結

    CentOS 7 安裝 MySQL 5.6遇到的各種問題小結

    在一測試服務器(CentOS Linux release 7.2.1511)上安裝MySQL 5.6(5.6.19 MySQL Community Server)時遇到了很多奇葩問題,今天小編給大家總結了關于entOS 7 安裝 MySQL 5.6遇到的各種問題,需要的朋友一起看看吧
    2016-11-11
  • 使用?Apache?反向代理的設置技巧

    使用?Apache?反向代理的設置技巧

    這篇文章主要介紹了如何使用?Apache?設置反向代理,該模塊使用ProxyApache 配置文件中的 -prefixed 指令進行配置。我們接下來會設置這些,需要的朋友可以參考下
    2022-01-01
  • centos8 安裝 nginx的詳細教程(圖文)

    centos8 安裝 nginx的詳細教程(圖文)

    Nginx是一個web服務器也可以用來做負載均衡及反向代理使用,目前使用最多的就是負載均衡,這篇文章主要介紹了centos8 安裝 nginx ,需要的朋友可以參考下
    2019-11-11
  • Linux刪除目錄下的文件的10種方法小結

    Linux刪除目錄下的文件的10種方法小結

    本文是腳本之家小編給大家收藏整理的Linux刪除目錄下的文件的10種方法,文中還給大家提到了Linux 刪除文件夾和文件的命令,具體內容詳情大家參考下本文
    2018-04-04
  • ssh自動備份主機文件的腳本

    ssh自動備份主機文件的腳本

    ssh自動備份主機文件的腳本,需要的朋友可以參考下。
    2011-08-08

最新評論

桐乡市| 项城市| 永顺县| 湄潭县| 错那县| 平果县| 娱乐| 库尔勒市| 驻马店市| 紫阳县| 青铜峡市| 峨山| 博客| 秦皇岛市| 栾城县| 久治县| 乐至县| 怀化市| 婺源县| 含山县| 怀柔区| 南开区| 石首市| 陈巴尔虎旗| 永仁县| 扬州市| 皮山县| 邵武市| 亳州市| 景东| 远安县| 英吉沙县| 社旗县| 镇原县| 合肥市| 普洱| 镇赉县| 甘孜| 竹溪县| 芦山县| 双柏县|