Apache的安裝部署及工作模式詳解-創(chuàng)新互聯(lián)

在LInux服務(wù)器上實(shí)現(xiàn)web服務(wù),常見無(wú)非也就是Apache、Nginx、Tomcat。

創(chuàng)新互聯(lián)建站是一家朝氣蓬勃的網(wǎng)站建設(shè)公司。公司專注于為企業(yè)提供信息化建設(shè)解決方案。從事網(wǎng)站開發(fā),網(wǎng)站制作,網(wǎng)站設(shè)計(jì),網(wǎng)站模板,微信公眾號(hào)開發(fā),軟件開發(fā),小程序設(shè)計(jì),10余年建站對(duì)木托盤等多個(gè)行業(yè),擁有豐富的網(wǎng)站營(yíng)銷經(jīng)驗(yàn)。

三者之間的區(qū)別:

  • Apache:支持的模塊比較多,采用servlet處理模型,同步阻塞模型,工作模式多變,對(duì)于高并發(fā)的場(chǎng)景處理速度比較慢,運(yùn)行穩(wěn)定;
  • Nginx :輕量級(jí)web服務(wù)器,自身支持模塊少,需要借助第三方模塊支持(Nginx官網(wǎng)就可以下載),采用epoll處理模式,異步非阻塞型,適合高并發(fā)場(chǎng)景,配置簡(jiǎn)單;
  • Tomcat:apache軟件基金會(huì)下開源的子項(xiàng)目,也成為容器,主要處理java語(yǔ)言編寫的頁(yè)面,也可以處理html頁(yè)面,并發(fā)連接??;

今天這篇博文主要就是圍繞apache-2.4.23版本展開的:

對(duì)apache不太了解的朋友可以參考博文:基于Apache搭建Web服務(wù)器詳解
這里就不具體介紹apache究竟是什么、它的起因什么的了。

博文大綱:
一、httpd-2.4.23版本特性
二、編譯安裝httpd-2.4.23
三、apche的三種工作模式
四、進(jìn)程與線程的區(qū)別

一、httpd-2.4.23版本特性

新版本的httpd-2.4.23新增模塊:

  • mod_proxy_fcgi(可提供fcgi代理);
  • mod_ratelimit(限制用戶帶寬);
  • mod_request(請(qǐng)求模塊,對(duì)請(qǐng)求進(jìn)行過濾);
  • mod_remoteip(匹配客戶端的IP地址);

對(duì)于基于IP的訪問控制進(jìn)行了修改,不再支持allow、deny、order機(jī)制,而是統(tǒng)一使用require進(jìn)行!

新增的特性有:

  • MPM支持在運(yùn)行時(shí)裝載;
  • 支持envet工作模式;
  • 支持異步讀寫功能;
  • 每個(gè)模塊都可以指定輸出的日志級(jí)別;
  • 增強(qiáng)版的表達(dá)式分析器;
  • 請(qǐng)求配置:<if>,<elseif>;
  • 毫秒級(jí)別的keepalive timeout;
  • 支持FQDN的虛擬主機(jī);
  • 支持自定義變量;

接下來(lái)開始安裝!

二、編譯安裝httpd-2.4.23

安裝環(huán)境:

  • 使用centos 7系統(tǒng);
  • 下載所需軟件包

(1)首先檢查是否安裝httpd軟件包

[root@localhost ~]# rpm -q httpd
未安裝軟件包 httpd 
//如果存在,使用“-e”選項(xiàng)進(jìn)行卸載

(2)安裝apr

apr是Apache可移植運(yùn)行庫(kù),是一個(gè)對(duì)操作系統(tǒng)條用的抽象庫(kù),用于實(shí)現(xiàn)Apache內(nèi)部組件對(duì)操作系統(tǒng)的使用,提高系統(tǒng)的可移植性。

[root@localhost ~]# tar zxf apr-1.5.2.tar.gz -C /usr/src
[root@localhost ~]# cd /usr/src/apr-1.5.2/
[root@localhost apr-1.5.2]# ./configure --prefix=/usr/local/apr && make && make install

(3)安裝apr-util

 [root@localhost ~]# tar zxf apr-util-1.5.4.tar.gz -C /usr/src
 [root@localhost ~]# cd /usr/src/apr-util-1.5.4/
 [root@localhost apr-util-1.5.4]#  ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && make && make install

(4)安裝zlib

[root@localhost ~]# tar zxf zlib-1.2.8.tar.gz -C /usr/src
[root@localhost ~]# cd /usr/src/zlib-1.2.8/
[root@localhost zlib-1.2.8]#  ./configure --prefix=/usr/local/zlib && make && make install

(5)安裝pcre

[root@localhost ~]# tar zxf pcre-8.39.tar.gz -C /usr/src
[root@localhost ~]# cd /usr/src/pcre-8.39/
[root@localhost pcre-8.39]#  ./configure -- prefix=/usr/local/pcre && make && make install

(6)安裝openssl

安裝apache-2.4.23版本時(shí),會(huì)提示openssl自帶的版本過低,需要自行手動(dòng)安裝新的版本。

[root@localhost ~]# tar zxf openssl-1.0.1u.tar.gz -C /usr/src
[root@localhost ~]# cd /usr/src/openssl-1.0.1u/
[root@localhost openssl-1.0.1u]#  ./config -fPIC --prefix=/usr/local/openssl enable-shared && make && make install
//PIC使.so文件的代碼段變?yōu)檎嬲饬x上的共享
//如果不加-fPIC,則加載.so文件的代碼段時(shí),代碼段引用的數(shù)據(jù)對(duì)象需要重定位, 重定位會(huì)修改代碼段的內(nèi)容,這就造成每個(gè)使用這個(gè).so文件代碼段的進(jìn)程在內(nèi)核里都會(huì)生成這個(gè).so文件代碼段的copy.每個(gè)copy都不一樣,取決于 這個(gè).so文件代碼段和數(shù)據(jù)段內(nèi)存映射的位置.

(7)安裝 httpd-2.4.23

[root@localhost ~]# tar zxf httpd-2.4.23.tar.gz -C /usr/src
[root@localhost ~]# cd /usr/src/httpd-2.4.23/
[root@localhost httpd-2.4.23]#  ./configure --prefix=/usr/local/http-2.4.23 --enable-so --enable-cgi \
 --enable-cgid --enable-ssl --with-ssl=/usr/local/openssl --enable-rewrite \
 --with-pcre=/usr/local/pcre --with-z=/usr/local/zlib --with-apr=/usr/local/apr \
 --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mods-shared=most \
 --enable-mpms-shared=all --with-mpm=event --enable-proxy --enable-proxy-fcgi --enable-expires \
 --enable-deflate  && make && make install

各選項(xiàng)含義:

  • --enable-so:支持動(dòng)態(tài)共享模塊;
  • --enable-rewrite:支持url重寫;
  • --enable-ssl:支持ssl;
  • --with-ssl=/usr/local/openssl:指定ssl安裝位置;
  • --enable-cgi:開啟cgi通用網(wǎng)管接口;
  • --enable-cgid:開啟cig通用網(wǎng)管接口管理程序;
  • --enable-modules=most:編譯成二進(jìn)制是安裝常用模塊;
  • --enable-mpms-shared=all:安裝apache的所有工作模式;
  • --with-mpm=event:指定默認(rèn)的運(yùn)行方式
  • --with-pcre=/usr/local/pcre:支持 pcre ;
  • --with-z=/usr/local/zlib:使用 zlib 壓縮庫(kù);
  • --with-apr=/usr/local/apr:指定 apr 的安裝路徑;
  • --with-apr-util=/usr/local/apr-util:指定 apr-util 的安裝路徑;
  • --enable-expires:支持緩存;
  • --enable-deflate:支持壓縮;

(8)優(yōu)化http程序的執(zhí)行路徑

[root@localhost httpd-2.4.23]#  ln -s /usr/local/http-2.4.23/bin/* /usr/local/bin/

(9)添加為系統(tǒng)服務(wù)

[root@localhost httpd-2.4.23]#  cp /usr/local/http-2.4.23/bin/apachectl /etc/init.d/httpd 
[root@localhost httpd-2.4.23]# vim /etc/init.d/httpd
#!/bin/bash                      //修改
#chkconfig: 35 85 15                   //添加
…………                  //省略以下內(nèi)容
[root@localhost httpd-2.4.23]#  chkconfig --add httpd 
[root@localhost httpd-2.4.23]# systemctl start httpd
[root@localhost httpd-2.4.23]# netstat -anpt | grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      108903/httpd 
[root@localhost ~]# httpd -M              //可以查看到httpd服務(wù)啟動(dòng)加載的模塊
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
//關(guān)于啟動(dòng)服務(wù)時(shí)提示以上的信息,可以省略,也可修改其配置文件(/usr/local/http-2.4.23/conf/httpd.conf)文件找到“ServerName ”一行,根據(jù)實(shí)際情況進(jìn)行修改
Loaded Modules:
 core_module (static)
 so_module (static)
 http_module (static)
 authn_file_module (shared)
 authn_core_module (shared)
 authz_host_module (shared)
 authz_groupfile_module (shared)
 authz_user_module (shared)
 authz_core_module (shared)
 access_compat_module (shared)
 auth_basic_module (shared)
 reqtimeout_module (shared)
 filter_module (shared)
 mime_module (shared)
 log_config_module (shared)
 env_module (shared)
 headers_module (shared)
 setenvif_module (shared)
 version_module (shared)
 mpm_prefork_module (shared)
 unixd_module (shared)
 status_module (shared)
 autoindex_module (shared)
 dir_module (shared)
 alias_module (shared)

至此apache-2.4.23已經(jīng)安裝完成。

三、apche的三種工作模式

(1)Prefork模式

其工作方式:當(dāng)Apache服務(wù)啟動(dòng)后,mpm_prefork模塊會(huì)預(yù)先創(chuàng)建多個(gè)子進(jìn)程(默認(rèn)為5個(gè)),每個(gè)子進(jìn)程只有一個(gè)線程,當(dāng)接收到客戶端請(qǐng)求后,mpm_prefork模塊再將請(qǐng)求轉(zhuǎn)交給子進(jìn)程進(jìn)行處理,并且每個(gè)子進(jìn)程同時(shí)只能用于單個(gè)請(qǐng)求。如果當(dāng)前的請(qǐng)求數(shù)將超過預(yù)先創(chuàng)建的子進(jìn)程數(shù)時(shí),mpm_prefork模塊就會(huì)創(chuàng)建新的子進(jìn)程來(lái)處理額外的請(qǐng)求。
如圖:
Apache的安裝部署及工作模式詳解
Apache總是試圖保持一些備用或空閑的子進(jìn)程用于迎接即將到來(lái)的請(qǐng)求。這樣客戶端的請(qǐng)求就不需要在接收后等待子進(jìn)程的產(chǎn)生。

由于在 mpm_prefork 模塊中,每個(gè)請(qǐng)求對(duì)應(yīng)一個(gè)子進(jìn)程,因此其占用的系統(tǒng)資源相對(duì)其他 兩種模塊而言較多。不過 mpm_prefork 模塊的優(yōu)點(diǎn)在于它的每個(gè)子進(jìn)程都會(huì)獨(dú)立處理對(duì)應(yīng) 的單個(gè)請(qǐng)求,這樣,如果其中一個(gè)請(qǐng)求出現(xiàn)問題就不會(huì)影響到其他請(qǐng)求。Prefork 在效率上 要比 Worker 要高,但是內(nèi)存使用大得多不擅長(zhǎng)處理高并發(fā)的場(chǎng)景。

開啟prefork模式的方法:

[root@localhost ~]# vim /usr/local/http-2.4.23/conf/httpd.conf
//編寫httpd的主配置文件,修改一下內(nèi)容
Include conf/extra/httpd-mpm.conf                     //默認(rèn)存在刪除“#”號(hào)即可
#LoadModule mpm_event_module modules/mod_mpm_event.so
//添加#號(hào)
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
//默認(rèn)存在,刪除#號(hào)即可!
#LoadModule mpm_worker_module modules/mod_mpm_worker.so
//這三行便是apache的三種工作模式,可根據(jù)實(shí)際情況進(jìn)行切換
[root@localhost ~]# systemctl restart httpd      //重新啟動(dòng)httpd服務(wù)
[root@localhost ~]# systemctl start httpd     //手動(dòng)再啟動(dòng)一下
[root@localhost ~]# httpd -V      //查看httpd的工作模式
//找到這一行即可
Server MPM:     prefork                //可以看到現(xiàn)在Apache工作在prefork模式

與prefork模式有關(guān)的配置文件如下:

[root@localhost ~]# vim /usr/local/http-2.4.23/conf/extra/httpd-mpm.conf 
//設(shè)置prefork模式也就只有這幾個(gè)參數(shù),具體含義:
<IfModule mpm_prefork_module>            //這就是prefork工作模式的參數(shù)-
    StartServers             5                //apache啟動(dòng)時(shí)默認(rèn)開啟的子進(jìn)程數(shù)
    MinSpareServers          5                  //最小的閑置子進(jìn)程數(shù)
    MaxSpareServers         10               //大的閑置子進(jìn)程數(shù)
    MaxRequestWorkers      250        // 設(shè)置了允許同時(shí)的大接入請(qǐng)求數(shù)量
    MaxConnectionsPerChild   0         //0表示每個(gè)子進(jìn)程處理完數(shù)據(jù)后進(jìn)程永不銷毀,設(shè)置成非0時(shí),可防止內(nèi)存泄漏,服務(wù)器在負(fù)載小時(shí)自動(dòng)減少自己進(jìn)程數(shù)
</IfModule>

關(guān)于其配置內(nèi)容可參考圖片:
Apache的安裝部署及工作模式詳解
//注 1:MaxRequestWorkers 是這些指令中最為重要的一個(gè),設(shè)定的是 Apache 可以同時(shí)處理 的請(qǐng)求,是對(duì) Apache 性能影響大的參數(shù)。如果請(qǐng)求總數(shù)已達(dá)到這個(gè)值(可通過 ps -ef|grep http|wc -l 來(lái)確認(rèn)),那么后面的請(qǐng)求就要排隊(duì),直到某個(gè)已處理請(qǐng)求完畢。這就是系統(tǒng)資源 還剩下很多而 HTTP 訪問卻很慢的主要原因。雖然理論上這個(gè)值越大,可以處理的請(qǐng)求就越 多,建議將初始值設(shè)為(以 Mb 為單位的大物理內(nèi)存/2),然后根據(jù)負(fù)載情況進(jìn)行動(dòng)態(tài)調(diào)整。 比如一臺(tái) 4G 內(nèi)存的機(jī)器,那么初始值就是 4000/2=2000
注 2:prefork 控制進(jìn)程在最初建立“StartServers”個(gè)子進(jìn)程后,為了滿足 MinSpareServers 設(shè)置的需要?jiǎng)?chuàng)建一個(gè)進(jìn)程,等待一秒鐘,繼續(xù)創(chuàng)建兩個(gè),再等待一秒鐘,繼續(xù)創(chuàng)建四個(gè)……如 此按指數(shù)級(jí)增加創(chuàng)建的進(jìn)程數(shù),最多達(dá)到每秒 32 個(gè),直到滿足 MinSpareServers 設(shè)置的值為止。這種模式 可以不必在請(qǐng)求到來(lái)時(shí)再產(chǎn)生新的進(jìn)程,從而減小了系統(tǒng)開銷以增加性能。 MaxSpareServers 設(shè)置了大的空閑進(jìn)程數(shù),如果空閑進(jìn)程數(shù)大于這個(gè) 值,Apache 會(huì)自動(dòng) kill 掉一些多余進(jìn)程。這個(gè)值不要設(shè)得過大,但如果設(shè)的值比 MinSpareServers 小,Apache 會(huì)自 動(dòng)把其調(diào)整為 MinSpareServers+1。如果站點(diǎn)負(fù)載較大,可考慮同時(shí)加大 MinSpareServers 和 MaxSpareServers。
注 3:ServerLimit 和 MaxClients(MaxRequestWorkers)有什么區(qū)別呢? 是因?yàn)樵?apache1 時(shí)代,控制大進(jìn)程數(shù)只有 MaxClients 這個(gè)參數(shù),并且這個(gè)參數(shù)大值為 256,并且是寫死了的,試圖設(shè)置為超過 256 是無(wú)效的,這是由于 apache1 時(shí)代的服務(wù)器硬 件限制的。但是 apache2 時(shí)代由于服務(wù)器硬件的升級(jí),硬件已經(jīng)不再是限制,所以使用 ServerLimit 這個(gè)參數(shù)來(lái)控制大進(jìn)程數(shù),ServerLimit 值>=MaxClient 值才有效。ServerLimit 要放在 MaxClients 之前,值要不小于 MaxClients

優(yōu)點(diǎn):成熟,兼容所有新老模塊。進(jìn)程之間完全獨(dú)立,使得它非常穩(wěn)定。同時(shí),不需要擔(dān)心線程安全的問題。(我們常用的mod_php,PHP的拓展不需要支持線程安全)

缺點(diǎn):一個(gè)進(jìn)程相對(duì)占用更多的系統(tǒng)資源,消耗更多的內(nèi)存。而且,它并不擅長(zhǎng)處理高并發(fā)請(qǐng)求,在這種場(chǎng)景下,它會(huì)將請(qǐng)求放進(jìn)隊(duì)列中,一直等到有可用進(jìn)程,請(qǐng)求才會(huì)被處理。

(2)Worker工作模式

Worker 模式(多線程多進(jìn)程): 和 prefork 模式相比,worker 使用了多進(jìn)程和多線程的混合模式,worker 模式也同樣會(huì)先預(yù)派生一些子進(jìn)程,然后每個(gè)子進(jìn)程創(chuàng)建一些線程,同時(shí)包括一個(gè)監(jiān)聽線程,每個(gè)請(qǐng)求過來(lái)會(huì) 被分配到一個(gè)線程來(lái)服務(wù)。線程比起進(jìn)程會(huì)更輕量,因?yàn)榫€程是通過共享父進(jìn)程的內(nèi)存空間, 因此,內(nèi)存的占用會(huì)減少一些,在高并發(fā)的場(chǎng)景下會(huì)比 prefork 有更多可用的線程,表現(xiàn)會(huì) 更優(yōu)秀一些;另外,如果一個(gè)線程出現(xiàn)了問題也會(huì)導(dǎo)致同一進(jìn)程下的線程出現(xiàn)問題,如果是 多個(gè)線程出現(xiàn)問題,也只是影響 Apache 的一部分,而不是全部。由于用到多進(jìn)程多線程, 需要考慮到線程的安全了,在使用 keep-alive 長(zhǎng)連接的時(shí)候,某個(gè)線程會(huì)一直被占用,即使 中間沒有請(qǐng)求,需要等待到超時(shí)才會(huì)被釋放(該問題在 prefork 模式下也存在) 總的來(lái)說(shuō),prefork 方式速度要稍高于 worker,然而它需要的 cpu 和 memory 資源也稍多于 woker。如圖:
Apache的安裝部署及工作模式詳解

Apache總是試圖維持一個(gè)備用(spare)或是空閑的服務(wù)線程池。這樣,客戶端無(wú)須等待新線程或新進(jìn)程的建立即可得到處理。在Unix中,為了能夠綁定80端口,父進(jìn)程一般都是以root身份啟動(dòng),隨后,Apache以較低權(quán)限的用戶建立子進(jìn)程和線程。User和Group指令用于配置Apache子進(jìn)程的權(quán)限。雖然子進(jìn)程必須對(duì)其提供的內(nèi)容擁有讀權(quán)限,但應(yīng)該盡可能給予他較少的特權(quán)。另外,除非使用了suexec(負(fù)責(zé)處理CGI和SSI程序的請(qǐng)求,確保網(wǎng)頁(yè)使用者能以該目錄或程序的用戶ID來(lái)執(zhí)行遠(yuǎn)程程序。) ,否則,這些指令配置的權(quán)限將被CGI腳本所繼承。

線程比起進(jìn)程會(huì)更輕量,因?yàn)榫€程通常會(huì)共享父進(jìn)程的內(nèi)存空間,因此,內(nèi)存的占用會(huì)減少一些,在高并發(fā)的場(chǎng)景下,表現(xiàn)得比 prefork模式好。

有些人會(huì)覺得奇怪,那么這里為什么不直接使用多線程呢?主要是需要考慮穩(wěn)定性,如果一個(gè)線程異常掛了,會(huì)導(dǎo)致父進(jìn)程連同其他正常的子線程都掛了(它們都是同一個(gè)進(jìn)程下的)。多進(jìn)程+多線程模式中,各個(gè)進(jìn)程之間都是獨(dú)立的,如果某個(gè)線程出現(xiàn)異常,受影響的只是Apache的一部分服務(wù),而不是整個(gè)服務(wù)。其他進(jìn)程仍然可以工作。

有關(guān)work模式的配置:

//自行修改httpd主配置文件,切換模式并重啟服務(wù),接下來(lái)
[root@localhost ~]# vim /usr/local/http-2.4.23/conf/extra/httpd-mpm.conf 
<IfModule mpm_worker_module>       //這是worker工作模式的參數(shù)
    StartServers             3                  //apache啟動(dòng)時(shí)默認(rèn)開始的子進(jìn)程數(shù)
    MinSpareThreads         75            //最小空閑數(shù)量的工作線程-
    MaxSpareThreads        250          //大空閑數(shù)量的工作線程-
    ThreadsPerChild         25              //每個(gè)子進(jìn)程產(chǎn)生的線程數(shù)量
    MaxRequestWorkers      400        //每個(gè)進(jìn)程大接受的請(qǐng)求數(shù)量
    MaxConnectionsPerChild   0         //表示永不銷毀
</IfModule>

有關(guān)work模式的詳細(xì)介紹請(qǐng)參考圖片:
Apache的安裝部署及工作模式詳解
Worker模式下所能同時(shí)處理的請(qǐng)求總數(shù)是由子進(jìn)程總數(shù)乘以ThreadsPerChild 值決定的,應(yīng)該大于等于MaxRequestWorkers。如果負(fù)載很大,現(xiàn)有的子進(jìn)程數(shù)不能滿足時(shí),控制進(jìn)程會(huì)派生新的子進(jìn)程。默認(rèn)大的子進(jìn)程總數(shù)是16,加大時(shí) 也需要顯式聲明ServerLimit(大值是20000)。需要注意的是,如果顯式聲明了ServerLimit,那么它乘以 ThreadsPerChild的值必須大于等于MaxRequestWorkers,而且MaxRequestWorkers必須是ThreadsPerChild的整數(shù)倍,否則 Apache將會(huì)自動(dòng)調(diào)節(jié)到一個(gè)相應(yīng)值。

優(yōu)點(diǎn):占據(jù)更少的內(nèi)存,高并發(fā)下表現(xiàn)更優(yōu)秀。

缺點(diǎn):必須考慮線程安全的問題,因?yàn)槎鄠€(gè)子線程是共享父進(jìn)程的內(nèi)存地址的。如果使用keep-alive的長(zhǎng)連接方式,也許中間幾乎沒有請(qǐng)求,這時(shí)就會(huì)發(fā)生阻塞,線程被掛起,需要一直等待到超時(shí)才會(huì)被釋放。如果過多的線程,被這樣占據(jù),也會(huì)導(dǎo)致在高并發(fā)場(chǎng)景下的無(wú)服務(wù)線程可用。(該問題在prefork模式下,同樣會(huì)發(fā)生)。

(3)Event MPM

這是Apache最新的工作模式,它和worker模式很像,不同的是在于它解決了keep-alive長(zhǎng)連接的時(shí)候占用線程資源被浪費(fèi)的問題,在event工作模式中,會(huì)有一些專門的線程用來(lái)管理這些keep-alive類型的線程,當(dāng)有真實(shí)請(qǐng)求過來(lái)的時(shí)候,將請(qǐng)求傳遞給服務(wù)器的線程,執(zhí)行完畢后,又允許它釋放。這增強(qiáng)了在高并發(fā)場(chǎng)景下的請(qǐng)求處理。如圖:
Apache的安裝部署及工作模式詳解

有關(guān)Event MPM模式的配置:

//自行修改httpd主配置文件,切換模式并重啟服務(wù),接下來(lái)
[root@localhost ~]# vim /usr/local/http-2.4.23/conf/extra/httpd-mpm.conf 
<IfModule mpm_event_module>
    StartServers             3
    MinSpareThreads         75
    MaxSpareThreads        250
    ThreadsPerChild         25
    MaxRequestWorkers      400
    MaxConnectionsPerChild   0                 
</IfModule>
//其各項(xiàng)配置內(nèi)容與work模式十分相似,這里就不多說(shuō)了!

四、進(jìn)程與線程的區(qū)別

線程就是指進(jìn)程內(nèi)的一個(gè)執(zhí)行單元,也是進(jìn)程內(nèi)的可調(diào)度實(shí)體。

線程與進(jìn)程的區(qū)別:

  • 地址空間:進(jìn)程內(nèi)的一個(gè)執(zhí)行單元;進(jìn)程至少有一個(gè)線程;它們共享進(jìn)程的地址空間;而進(jìn)程有自己獨(dú)立的地址空間;
  • 資源擁有:進(jìn)程是資源分配和擁有的單位,同一個(gè)進(jìn)程內(nèi)的線程共享進(jìn)程的資源;
  • 線程是處理器調(diào)度的基本單位,但進(jìn)程不是;
  • 二者均可并發(fā)執(zhí)行;

進(jìn)程和線程都是由操作系統(tǒng)所體會(huì)的程序運(yùn)行的基本單元,系統(tǒng)利用該基本單元實(shí)現(xiàn)系統(tǒng)對(duì)應(yīng)用的并發(fā)性。
進(jìn)程和線程的區(qū)別在于:
簡(jiǎn)而言之,一個(gè)程序至少有一個(gè)進(jìn)程,一個(gè)進(jìn)程至少有一個(gè)線程。
線程的劃分尺度小于進(jìn)程,使得多線程程序的并發(fā)性高。
另外,進(jìn)程在執(zhí)行過程中擁有獨(dú)立的內(nèi)存單元,而多個(gè)線程共享內(nèi)存,從而極大地提高了程
序的運(yùn)行效率。

———————— 本文至此結(jié)束,感謝閱讀 ————————

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

當(dāng)前標(biāo)題:Apache的安裝部署及工作模式詳解-創(chuàng)新互聯(lián)
瀏覽地址:http://www.muchs.cn/article28/ejhcp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、用戶體驗(yàn)、網(wǎng)頁(yè)設(shè)計(jì)公司、定制網(wǎng)站、網(wǎng)站內(nèi)鏈App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司