- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業務經營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯網協會理事單位
- 安全聯盟認證網站身份V標記
- 域名注冊服務機構許可:滇D3-20230001
- 代理域名注冊服務機構:新網數碼
【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。
提交成功!非常感謝您的反饋,我們會繼續努力做到更好!
這條文檔是否有幫助解決問題?
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP