久久青草精品A片狠狠,日韩欧美视频一区二区,亚洲国码AV日韩,国产精品黄在

Apache端口-進程-模塊化-DSO和MPM

2016-02-15 16:45:37 7990

【apche的端口和進程】

Apache默認安裝完之后監聽的是TCP協議的80端口,如果是加密的https協議的話就是443端口。

我們可以通過命令  netstat tupln | grep 80 來查看。

Apache默認會啟動一個主進程(也叫控制進程)也多個子進程

我們可以通過命令 ps aux | grep httpd 來查看,默認會啟用多個子進程,

這些進程里面有一個主進程,怎么區分呢?

首先,主進程由root運行,其它進程是由apache用戶來運行

其次,因為主進程是第一個啟動,子進程都是由主進程來運行的,所以我們可以通過

          進程的id來判斷,主進程的id是最小的

最后我們也可以通過查看 /etc/httpd/run/httpd.pid 文件來查看主進程的id

真正處理請求的是子進程。



【DSO動態加載】

apache本身是一個模塊設計的服務,各個的功能,特性是獨立分開的,

這樣設計的好處在于可擴展很強,各個模塊相互依耐性較低,有利于后期的升級或者添加新功能比較方便

核心只包含主要功能,擴展功能通過模塊實現。不同模塊可以被靜態的編譯進程序,也可以動態加載

DSO  動態共享對象,模塊的動態加載就是通過DSO來實現的,動態加載指的是當我們需要新的功能的時候,

我們把需要的功能編譯出來,通過配置文件加載進apche的服務當中。不需要重新編譯apahce。

通過apache的apxs就可以獨立的去編譯的動態模塊,這個工具是屬于httpd-devel開發相關的軟件包中的。

可以通過http -M(httpd -l 查看靜態模塊) 查看當前都編譯了哪些模塊,其中static為靜態編譯進apache的,shared為動態編譯進入的。

DSO的實現是通過so_module靜態模塊實現的。 mod_so.c是DSO本身的模塊



【MPM 多進程模塊】

MPM(Multi Process Modules)

因為apache本身是一個跨平臺的,但是不同操作系統,對底層網絡請求的處理,操作系統為我們提供的接口都不同。

如果強行使用一種統一的方式去實現就沒有最大化的利用操作系統的最大優勢,所以在不同平臺下使用不同的MPM

其中Linux下有  prefork 和worker     Windows下有 mpm_winnt

Linux下默認的是使用prefork,我們來分析一些prefork與worker的區別

Prefork (預先生成) 是非線程,預生成進程型MPM,prefork會預先啟動一些子進程,每個子進程一個時間點只能處理一個請求,并且會根據并發請求數量動態生成更多子進程。優勢是線程安全的

Worker worker是線程化,多進程的MPM,每個進程可以生成多個線程,每個線程處理一個請求。優勢是不需要啟用多個子進程,這樣可以節約內存,缺點是效率沒有prefork高。

如果要使用其他的MPM需要重新編譯Apache。





提交成功!非常感謝您的反饋,我們會繼續努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務,我們很需要您進一步的反饋信息:

在文檔使用中是否遇到以下問題: