Apache的3種工做模式 (資源)

Apache WEB服務器企業實戰php

萬維網 (WORLD WIDE WEB,WWW)服務器,也稱之爲WEB服務器,主要功能是提供網上信息瀏覽服務。WWW是 Internet的多媒體信息查詢工具,是Internet上飛快發展的服務,也是目前用的最普遍的服務。正是由於有了WWW軟件,才使得近年來 Internet 迅速發展。html

目前主流的WEB服務器軟件包括:Apache、Nginx、Lighttpd、IIS、Resin、Tomcat、WebLogic、Jetty等。python

Prefork MPM工做原理linux

        每輛汽車都有發動機引擎,不一樣的引擎,對車子運行效率也不同,一樣Apache也有相似工做引擎或者處理請求的模塊,亦可稱之爲多路處理模塊(Multi-Processing Modules,MPM),Apache WEB服務器有三種處理模塊:Prefork MPM、Worker MPM、Event MPM。nginx

       在企業中最經常使用的處理模塊爲Prefork MPM和Worker MPM,Event MPM不支持HTTPS方式,官網也給出」This MPM is experimental, so it may or may not work as expected」提示,因此不多被使用。git

        默認Apache處理模塊爲Prefork MPM方式,Prefork採用的預派生子進程方式,Prefork用單獨的子進程來處理不一樣的請求,進程之間是彼此獨立的,因此比較穩定。github

        Prefork的工做原理:控制進程Master在最初創建」StartServers」個進程後,爲了知足MinSpareServers設置的最小空閒進程,因此需建立第一個空閒進程,等待一秒鐘,繼續建立兩個,再等待一秒鐘,繼續建立四個,依次按照遞增指數級建立進程數,最多每秒同時建立32個空閒進程,直到知足至少有MinSpareServers設置的值爲止。web

         Apache的預派生模式(Prefork),基於預派生模式,沒必要在請求到來時再產生新的進程,從而減少了系統開銷以增長性能,不過因爲Prefork MPM引擎是基於多進程方式提供對外服務,每一個進程佔內存也相對較高。sql

 

Apacheshell

          主配置文件         /etc/httpd/conf/httpd.conf

          訪問日誌文件      /var/log/httpd/access_log

          日誌備份配置文件       /etc/logrotate.d/httpd

          配置文件主目錄: /etc/httpd/conf/http.conf 
          默認發佈目錄是:/var/www/html 
          子配置文件目錄 /etc/httpd/conf.d/*
          默認關聯上下文的狀況是 httpd_sys_content_t 
          通找到index 進行添加默認訪問目錄,其訪問順序分前後次序
          apache 日誌文件位置 :/etc/httpd/logs/*
          apache 的默認用戶爲apache 
          apache 有同步阻塞功能,使用的意義是在有多個文件時是順序訪問的

          apache 的默認安裝目錄/usr/local/apache

 

常見Apache命令 :

 pkill httpd                 #殺死以前安裝的apache服務

/usr/local/apache2/bin/apachectl start                  #啓動Apache

ps -ef | grep httpd                #查看apache進程是否啓動

ssh -l 192.168.163.131 "sh /root/auto_config_apache.sh"                      #遠程執行腳本

scp -r auto_config_apache.sh root@192.168.163.131:/root/                  #遠程拷貝文件和目錄

        用戶請求的URI(具體請求的文件),Apache判斷文件是否屬於靜態或者動態文件,若是是靜態文件直接解析並處理,將數據返回給瀏覽器,瀏覽器經過MIME調用相應軟件解析內容,渲染生成WEB頁面。

        若是用戶請求的是PHP動態文件,Apache是不能直接解析的,Apache將該文件於PHP模塊。

       Apache HTTP Server 簡稱爲 Apache。它的發佈獲得Apache許可證 2.0 版的許可該web服務器自身使用模塊化架構,加載mod_proxy模塊能夠增長服務器代理/ 網關的功能,加載mod_proxy_balancer模塊能夠爲全部支持的協議提供負載平衡。在v2.4版本里,Apache可經過全新的mod_http2模塊支持HTTP/2。

        Apache服務器,提供的子進程的缺省的用戶是root

Apache與Tomcat關係

       Apache是一款開源的Web服務器產品,大部分都用C語言編寫(你直接理解成用C語言編寫算了)。全世界使用量排名第一的Web服務器。另外,Apache也是一個開源軟件基金會的名字,其下管理不少開源項目,也包括這款叫Apache的Web服務器軟件。

       Tomcat一樣是一款開源的Web服務器產品,使用Java語言編寫。也同Apache服務器同樣,提供Web服務,但Tomcat主要用於承載JSP、CGI等服務端處理腳本,並提供運行環境,處理客戶端請求,再輸出HTML返回給用戶。這類在服務端動態加載數據(可更改的數據)並回傳給客戶端瀏覽器的網站叫動態網站或動態網頁。相對的,還有一類叫靜態網頁的,就是數據不變更的網頁或網站,這類頁面可能是HTML或HTML文件集合。

apache主要有兩種工做模式:prefork(apache的默認安裝模式)和worker(能夠在編譯的時候加參數–with-mpm- worker選擇工做模式)
prefork的特色是:(預派生)
1.這種模式能夠沒必要在請求到來時再產生新的進程,從而減少了系統開銷
2.能夠防止意外的內存泄漏
3.在服務器負載降低的時候會自動減小子進程數


worker的特色是:支持混合的多線程多進程的多路處理模塊
若是對於一個高流量的HTTP服務器,worker MPM是一個比較好的選擇,由於worker MPM佔用的內存要比prefork要小。

Prefork mpm和Worker MPM 引擎區別 : 

 Prefork mpm模式 :使用多個進程,每一個進程只有一個線程,每一個進程在某個肯定的時間只能維持一個鏈接,穩定,內存開銷較高;

Worker MPM模式 :使用多個進程,每一個子進程包含多個線程,每一個線程在某個肯定的時間只能維持一個鏈接,內存佔用量比較小,適合大併發、高流量的WEB服務器。Worker MPM缺點是一個線程崩潰,整個進程就會連同其餘的任何線程一塊兒崩潰

      默認Apache處理模塊爲 Prefork mpm方式, Prefork 採用的預派生子進程方式, Prefork用單獨的子進程來處理不一樣的請求,進程之間是彼此獨立的,因此比較穩定。

 

Apache 服務器的配置文件 httpd.conf 中有不少內容,請解釋以下配置項:
(1)MaxKeepAliveRequests 200 (2)UserDir public_html
(3)DefaultType text/plain (4)AddLanguare en.en
(5)DocumentRoot「/usr/local/httpd/htdocs」
(6)AddType application/x-httpd-php.php.php.php4
參考答案:
(1)容許每次鏈接的最大請求數目,此爲 200;(2)設定用戶放置網頁的目錄;
(3)設置服務器對於不認識的文件類型的預設格式;
(4)設置可傳送語言的文件給瀏覽器;(5)該目錄爲 Apache 放置網頁的地方;
(6)服務器選擇使用 php4。

 

試解釋 apache 服務器如下配置的含義:
(1)port 1080 (2)UserDir userdoc
(3)DocumentRoot 「/home/htdocs」
(4)<Directory /home/htdocs/inside>;
Options Indexes FollowSymLinks
AllowOverride None
Order deny,allow
deny from all
allow from 192.168.1.5
</Directory>;
(5)Server Type Standlone
參考答案:
Apache 服務器配置行含義以下:
(1)將 apache 服務器的端口號設定爲 1080;
(2)設定用戶網頁目錄爲 userdoc;
(3)設定 apache 服務器的網頁根目錄:/home/htdocs;
(4)在此 apache 服務器上設定一個目錄/home/htdocs/inside,且此目錄只容許 IP 地
址爲 192.168.1.5 的主機訪問;
(5)定義 apache 服務器以獨立進程的方式運行。

 

Apache與Tomcat比較

 

相同點:       

        Apache與Tomcat都是Web服務器,都支持跨平臺,都是開源項目       

        Apache與Tomcat都屬於Apache開源軟件基金會下的項目,並運行在全世界不少服務器上

不一樣點:      

       Apache服務器是C語言編寫,其主要的側重點是並行能力和均衡負載,Tomcat服務器用Java編寫,主要側重於做爲一個Servlet容器,作到後臺動態處理,由Java和JRE處理。      

      Apache服務器只支持靜態頁面的請求處理,並不支持動態網頁的處理。要完成動態處理,必須經過插件或做爲Apache擴展模塊,在啓動時動態加載到Apache擴展接口供調用。而Tomcat就支持動態網頁處理,使用CGI或Java,咱們對Java的使用更多,因此大部分時候說到Tomcat就能想到JSP。

       Apache主要提供的是靜態頁面處理,對於動態頁面處理這類問題,可能是做爲其擴展的一部分由其餘語言或第三方插件控制。能夠這樣想,Apache提供了一箇中轉,將不一樣的數據請求分發到各個對應的模塊,PHP請求發送 到對應的PHP模塊,CGI請求則建立一個進程並調用CGI腳本,這時候當對應模塊處理完,將做爲輸出返回給Apache服務器,Apache服務器再將這些結果(HTML頁面)返回給客戶端瀏覽器。        而Tomcat雖然也是個服務器(這裏咱們只討論做爲Java Servlet容器的實現),接受的只能是對JSP的請求。Tomcat是按照J2EE發佈的JSP和Servlet標準實現的,徹底支持這兩種標準,被做爲一個Servlet容器實現。當Tomcat接收到JSP頁面請求時,先用Tomcat解析,獲得相應的參數,再找到對應的Servlet路由,以後調用Servlet接口中的對應方法(Get、Post、Delete、Put等),處理客戶端傳回的數據或請求動做,最後獲得輸出,返回給Tomcat,Tomcat再使用JSP渲染出HTTP,傳回客戶端瀏覽器。

 

 

Apache Tomcat

Apache只支持靜態網頁,但像php,cgi,jsp等動態網頁就須要Tomcat來處理。

    最主要的兩種模式是prefork 模式與worker 模式。prefork 每一個子進程只有一個線
程,效率高但消耗內存大,是unix 下默認的模式;worker 模式每一個子進程有多個線程,
內存消耗低,但一個線程崩潰會牽連其它同子進程的線程。

Apache 服務器進程配置文件是httpd.conf 。

        prefork 的特色是:(預派生)
1.這種模式能夠沒必要在請求到來時再產生新的進程,從而減少了系統開銷
2.能夠防止意外的內存泄漏
3.在服務器負載降低的時候會自動減小子進程數
     worker 的特色是:支持混合的多線程多進程的多路處理模塊
若是對於一個高流量的HTTP 服務器,worker MPM 是一個比較好的選擇,由於worker
MPM 佔用的內存要比prefork 要小。

Worker 模式  : 以多個線程提供服務,全部的線程共享內存空間,一個down掉,整個進程奔潰,適合高併發的場景。

Preforj 模式  :多個進程提供服務,比較穩定,佔用內存高,提供中小訪問併發。

 

Tomcat是由Apache軟件基金會下屬的Jakarta項目開發的一個Servlet容器。

Apache,nginx,tomcat並稱爲網頁服務三劍客

Apache Tomcat是在Apache許可證 2.0 版的受權下進行發佈的,一般用於運行Java應用程序。此外,它可以經過Coyote的擴展,扮演爲本地文件HTTP文檔服務的普通服務器的角色。

 

                                                    Apache 2.X的工做模式

 

Apache有三種工做模式:分別是 preforkworkerevent

 

prefork

(多進程,每一個進程產生子進程)

prefork 是一種非線程、與派生的工做模式,用的是進程去處理請求,因此比較容易消耗內存,可是穩定性好,某個進程出現問題不會影響到其餘請求。

worker

(多進程,每一個進程生成多個線程)

worker是使用多個子進程、每一個子進程有多個線程、因爲使用的是線程去處理請求,消耗內存小,適合高流量的請求,可是若是某個進程出現問題,那麼這個進程下的線程都會出現問題,即穩定性不是很好。

event

event模式,是爲解決keep-alive保持長鏈接出現的一種工做模式,使用keep-alive長鏈接的時候,某個線程會一直被佔用,即便中間沒有請求,須要等到超時纔會被釋放,因此這個時候就出現了event的工做模式就出現了。

                                      如 何 配 置 模 塊

查當前工做模式

用命令(httpd -l)查看

  1. worker.c  表明工做在worker 模式下
  2. prefork.c 表明工做在prefork 模式下

配置工做模式

在安裝的時候須要指定模式:

[root@localhost httpd-2.4.1]# ./configure --prefix=/usr/local/apache2worker --enable-so --with-mpm=worker 
[root@localhost httpd-2.4.1]# make
[root@localhost httpd-2.4.1]# make install

--with-mpm=worker 選項指定工做模式爲worker,不指定模式的話,默認爲Prefork。 

                                                3 種模式解析

 

配置在.../apache/conf/extra/httpd-mpm.conf文件。

perfork

<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 250
MaxConnectionsPerChild 0
</IfModule> 

 

StartServers

數量的服務器進程開始。

 

MinSpareServers

最小數量的服務器進程,保存備用。

 

MaxSpareServers 

最大數量的服務器進程,保存備用。

 

MaxRequestWorkers

最大數量的服務器進程容許開始。

 

MaxConnectionsPerChild

最大鏈接數的一個服務器進程服務。

worker

<IfModule mpm_worker_module>
StartServers 3
MinSpareThreads 75
MaxSpareThreads 250 
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 0
</IfModule>

 

StartServers

初始數量的服務器進程開始。

 

MinSpareThreads

最小數量的工做線程,保存備用。

 

MaxSpareThreads

最大數量的工做線程,保存備用。

 

ThreadsPerChild

固定數量的工做線程在每一個服務器進程。

 

# MaxRequestWorkers

最大數量的工做線程。

 

MaxConnectionsPerChild

最大鏈接數的一個服務器進程服務。

event

<IfModule mpm_event_module>
StartServers 3
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 0
</IfModule> 

 

# StartServers

初始數量的服務器進程開始。

 

MinSpareThreads

最小數量的工做線程,保存備用。

 

MaxSpareThreads  

最大數量的工做線程,保存備用。

 

ThreadsPerChild 

固定數量的工做線程在每一個服務器進程。

 

MaxRequestWorkers 

最大數量的工做線程。

 

MaxConnectionsPerChild

最大鏈接數的一個服務器進程服務。

 

Nginx、Apache工做原理以及nginx爲什麼比Apache高效

        衆所周知,Nginx在處理大併發靜態請求方面,效率明顯高於httpd,甚至能輕鬆解決C10K問題。

       在高併發鏈接的狀況下,Nginx是Apache服務器不錯的替代品。Nginx同時也能夠做爲7層負載均衡服務器來使用。根據個人測試結果,    Nginx0.7.14+PHP5.2.6(FastCGI)能夠承受3萬以上的併發鏈接數,至關於同等環境下Apache的10倍。

      通常來講,4GB內存的服務器+Apache(prefork模式)通常只能處理3000個併發鏈接,由於它們將佔用3GB以上的內存,還得爲系統預留1GB的內存。我曾經就有兩臺Apache服務器,由於在配置文件中設置的MaxClients爲4000,當Apache併發鏈接數達到3800時,致使服務器內存和Swap空間用滿而崩潰。

      而這臺Nginx0.7.14+PHP5.2.6(FastCGI)服務器在3萬併發鏈接下,開啓的10個Nginx進程消耗150M內存(15M*10=150M),開啓的64個php-cgi進程消耗1280M內存(20M*64=1280M),加上系統自身消耗的內存,總共消耗不到2GB內存。若是服務器內存較小,徹底能夠只開啓25個php-cgi進程,這樣php-cgi消耗的總內存數才500M。

      在3萬併發鏈接下,訪問Nginx0.7.14+PHP5.2.6(FastCGI)服務器的PHP程序,仍然速度飛快。

      爲何Nginx在處理高併發方面要優於httpd,咱們先從兩種web服務器的工做原理以及工做模式提及。

 

apache三種工做模式

咱們都知道Apache有三種工做模塊,分別爲prefork、worker、event。

prefork:多進程,每一個請求用一個進程響應,這個過程會用到select機制來通知。

worker:多線程,一個進程能夠生成多個線程,每一個線程響應一個請求,但通知機制仍是select不過能夠接受更多的請求。

event:基於異步I/O模型,一個進程或線程,每一個進程或線程響應多個用戶請求,它是基於事件驅動(也就是epoll機制)實現的。

 

4.2prefork的工做原理

若是不用「--with-mpm」顯式指定某種MPM,prefork就是Unix平臺上缺省的MPM.它所採用的預派生子進程方式也是Apache1.3中採用的模式。prefork自己並無使用到線程,2.0版使用它是爲了與1.3版保持兼容性;另外一方面,prefork用單獨的子進程來處理不一樣的請求,進程之間是彼此獨立的,這也使其成爲最穩定的MPM之一。

 

4.3worker的工做原理

相對於prefork,worker是2.0版中全新的支持多線程和多進程混合模型的MPM。因爲使用線程來處理,因此能夠處理相對海量的請求,而系統資源的開銷要小於基於進程的服務器。可是,worker也使用了多進程,每一個進程又生成多個線程,以得到基於進程服務器的穩定性,這種MPM的工做方式將是Apache2.0的發展趨勢。

 

4.4event基於事件機制的特性

一個進程響應多個用戶請求,利用callback機制,讓套接字複用,請求過來後進程並不處理請求,而是直接交由其餘機制來處理,經過epoll機制來通知請求是否完成;在這個過程當中,進程自己一直處於空閒狀態,能夠一直接收用戶請求。能夠實現一個進程程響應多個用戶請求。支持持海量併發鏈接數,消耗更少的資源。

 

如何提升Web服務器的併發鏈接處理能力

有幾個基本條件:

1.基於線程,即一個進程生成多個線程,每一個線程響應用戶的每一個請求。

2.基於事件的模型,一個進程處理多個請求,而且經過epoll機制來通知用戶請求完成。

3.基於磁盤的AIO(異步I/O)

4.支持mmap內存映射,mmap傳統的web服務器,進行頁面輸入時,都是將磁盤的頁面先輸入到內核緩存中,再由內核緩存中複製一份到web服務器上,mmap機制就是讓內核緩存與磁盤進行映射,web服務器,直接複製頁面內容便可。不須要先把磁盤的上的頁面先輸入到內核緩存去。

恰好,Nginx支持以上全部特性。因此Nginx官網上說,Nginx支持50000併發,是有依據的。

 

Nginx優異之處

傳統上基於進程或線程模型架構的web服務經過每進程或每線程處理併發鏈接請求,這勢必會在網絡和I/O操做時產生阻塞,其另外一個必然結果則是對內存或CPU的利用率低下。生成一個新的進程/線程須要事先備好其運行時環境,這包括爲其分配堆內存和棧內存,以及爲其建立新的執行上下文等。這些操做都須要佔用CPU,並且過多的進程/線程還會帶來線程抖動或頻繁的上下文切換,系統性能也會由此進一步降低。另外一種高性能web服務器/web服務器反向代理:Nginx(EngineX),nginx的主要着眼點就是其高性能以及對物理計算資源的高密度利用,所以其採用了不一樣的架構模型。受啓發於多種操做系統設計中基於「事件」的高級處理機制,nginx採用了模塊化、事件驅動、異步、單線程及非阻塞的架構,並大量採用了多路複用及事件通知機制。在nginx中,鏈接請求由爲數很少的幾個僅包含一個線程的進程worker以高效的迴環(run-loop)機制進行處理,而每一個worker能夠並行處理數千個的併發鏈接及請求。

 

Nginx工做原理

Nginx會按需同時運行多個進程:一個主進程(master)和幾個工做進程(worker),配置了緩存時還會有緩存加載器進程(cacheloader)和緩存管理器進程(cachemanager)等。全部進程均是僅含有一個線程,並主要經過「共享內存」的機制實現進程間通訊。主進程以root用戶身份運行,而worker、cacheloader和cachemanager均應以非特權用戶身份運行。

在高鏈接併發的狀況下,Nginx是Apache服務器不錯的替代品

Nginx安裝很是的簡單,配置文件很是簡潔(還可以支持perl語法),Bugs很是少的服務器:Nginx啓動特別容易,而且幾乎能夠作到7*24不間斷運行,即便運行數個月也不須要從新啓動.你還可以不間斷服務的狀況下進行軟件版本的升級。

 

Nginx的誕生主要解決C10K問題

最後咱們從各自使用的多路複用IO模型來分析:select模型:(apache使用,因爲受模塊等限制,用的很少)

單個進程可以監視的文件描述符的數量存在最大限制

select()所維護的存儲大量文件描述符的數據結構,隨着文件描述符數量的增加,其在用戶態和內核的地址空間的複製所引起的開銷也會線性增加

因爲網絡響應時間的延遲使得大量TCP鏈接處於非活躍狀態,但調用select()仍是會對全部的socket進行一次線性掃描,會形成必定的開銷

poll:poll是unix沿用select本身從新實現了一遍,惟一解決的問題是poll沒有最大文件描述符數量的限制

epoll模型:(nginx使用)

epoll帶來了兩個優點,大幅度提高了性能:

基於事件的就緒通知方式,select/poll方式,進程只有在調用必定的方法後,內核纔會對全部監視的文件描述符進行掃描,而epoll事件經過epoll_ctl()註冊一個文件描述符,一旦某個文件描述符就緒時,內核會採用相似call back的回調機制,迅速激活這個文件描述符,epoll_wait()便會獲得通知

調用一次epoll_wait()得到就緒文件描述符時,返回的並非實際的描述符,而是一個表明就緒描述符數量的值,拿到這些值去epoll指定的一個數組中依次取得相應數量的文件描述符便可,這裏使用內存映射(mmap)技術,避免了複製大量文件描述符帶來的開銷

固然epoll也有必定的侷限性,epoll只有Linux2.6纔有實現,而其餘平臺都沒有,這和apache這種優秀的跨平臺服務器,顯然是有些背道而馳了。簡單來講epoll是select的升級版,單進程管理的文件描述符沒有最大限制。但epoll只有linux平臺可以使用。做爲跨平臺的Apache沒有使用。

 

Apache優化方法  :  

一、控制MaxClients的設置,以免服務器產生太多的子進程而發生交換。

進程間的數據交換會佔用很大內存,數據交換產生的滯後使用戶總感受」不夠快」,因此用戶就可能去按」中止」和」刷新」,從而帶來更大的負載。通常建議小網站將MaxClients設置爲12~24。

 

二、選擇更好的硬件,CPU、內存、硬盤等等

這句很雞肋啦,若是有更多的銀子,誰不肯意換更好的呢?

 

三、按期更新操做系統,打上系統補丁;若是你的操做系統支持sendfile()系統調用,則務必安裝帶有此功能的版本或補丁

在支持sendfile的系統中,Apache2能夠更快地發送靜態內容並且佔用較少的CPU時間。

 

四、HostnameLookups設置爲off

儘可能較少DNS查詢的次數。若是你使用了任何」Allow from domain」或」Deny from domain」指令(也就是domain使用的是主機名而不是IP地址),則代價是要進行兩次DNS查詢(一次正向和一次反向,以確認沒有做假)。因此,爲了獲得最高的性能,應該避免使用這些指令(不用域名而用IP地址也是能夠的)。

 

五、爲Directory加上FollowSymLinks

若是網站空間中沒有使用 Options FollowSymLinks ,Apache就必須執行額外的系統調用以驗證符號鏈接。例如:在請求」/index.html」時,Apache將對」/www」、」/www/htdocs」、」/www/htdocs/index.html」執行lstat()調用。並且lstat()的執行結果不被緩存,所以對每個請求都要執行一次。

 

六、將AllowOverride設置爲None

對於使用虛擬主機的朋友可能會以爲不方便,這樣設置將會使.htaccess中的設置失效,若是實在須要,而且在有條件的狀況下,請在conf配置文件中直接寫入rewrite規則

 

七、禁用內容協商

儘管在實踐中,內容協商的好處大於性能的損失,若是你很在乎那一點點的性能損失,則能夠禁止使用內容協商。可是仍然有個方法能夠提升服務器的速度,就是不要使用通配符。

 

八、MaxRequestsPerChild設置爲非0以防止內存泄漏

MaxRequestsPerChild用於控制apache子進程在什麼時候銷燬,默認爲0,表明永不銷燬子進程,這可能會存在內存泄漏的風險,建議設置爲10000

 

九、KeepAlive與KeepAliveTimeOut

若是你使用的使mpm_prefork模式(apache默認安裝),那麼建議你將KeepAlive設置爲off;由於,開啓keepalive會爲每一個客戶端創建一個鏈接,prefork不會建立線程,估計100個用戶同時訪問你的網站,apache就會掛了~,若是你實在想開啓,那麼請將KeepAliveTimeOut 時間設置更短些,例如5,默認是60秒呢

 

十、不要靜態編譯apache

儘管會有不少人和你說靜態編譯的好處,同時,你本身也想本身編譯一把,以體驗樂趣~可是,將模塊已靜態方式編譯進apache絕對不是一個好選擇,尤爲是對於缺銀子的站長們來講,一個配置不當,apache會在啓動時就佔用光你全部的內存,最後拖垮服務器。

 

 

 

參考連接   :

https://mp.weixin.qq.com/s/3F1M6uWOOV3BUXfoEU7DGQ

Apache優化方法,你知道幾個呢?  :  https://mp.weixin.qq.com/s/3F1M6uWOOV3BUXfoEU7DGQ

 

 

 

連接 : 

apache Rewrite防盜鏈設置方法  : https://www.jb51.net/os/RedHat/2170.html

Gzip在apache2中的設置和squid對它的處理方法分析  :  https://www.jb51.net/os/RedHat/2169.html

Apache服務器優化方法小結  :  https://www.jb51.net/os/RedHat/2167.html

linux構建動態WEB服務器安裝篇  :  https://www.jb51.net/os/RedHat/list92_47.html

apache 403錯誤 Forbidden解決方法  :  https://www.jb51.net/os/RedHat/1303.html

查看Apache的在線用戶數方法 : https://www.jb51.net/os/RedHat/1308.html

獲取apache請求的header信息   :    http://bean-li.github.io/apache-header-log/

 

原  apache,php經常使用配置        https://blog.csdn.net/tdcqfyl/article/details/51910731

原  windows下配置apache+https   : https://blog.csdn.net/tdcqfyl/article/details/79023431

原  Apache配置項目圖片地址映射         :   https://blog.csdn.net/tdcqfyl/article/details/81839562

 

原  Apache應用的認證配置(Linux環境) : https://blog.csdn.net/tdcqfyl/article/details/52021706

 

 

RHEL5 Apache+Tomcat整合,同時支持jsp與php  :  https://www.jb51.net/os/RedHat/1309.html

Linux系統Jsp的環境:Apache,Tomcat配置  : https://www.jb51.net/os/RedHat/1305.html

Apache安裝、配置、優化  : https://www.jb51.net/os/RedHat/1304.html

apache如何禁止使用IP訪問  :  https://www.jb51.net/os/RedHat/1302.html

Linux httpd(apache)啓動失敗 解決辦法  : https://www.jb51.net/os/RedHat/1300.html

 

linux系統配置Apache虛擬主機實例  :  https://www.jb51.net/os/RedHat/1288.html

如何修改apache 2最大鏈接數  :   https://www.jb51.net/os/RedHat/1248.html

優化Apache,讓網站速度更快   :  https://www.jb51.net/os/RedHat/1105.html

linux 下Apache設置與優化   :  https://www.jb51.net/os/RedHat/1058.html

利用apache防盜連方法   :  https://www.jb51.net/os/RedHat/1060.html

關於Socket高併發的原理介紹及使用Apache Mina帶來線上的問題分析    :  https://mp.weixin.qq.com/s/dpGmU0MHwxAU62lggej9xw

php5-fpm一直沒法監聽9000端口 | Nginx配置TP5     : https://www.jianshu.com/p/afc2163f6790

Apache2對CGI的支持配置{C++與python}   : https://www.jianshu.com/p/69f06f83e08a

配置apache運行cgi程序                       :  https://www.cnblogs.com/itech/archive/2013/04/06/3002831.html

Apache支持Python之CGI編程環境  : https://www.jianshu.com/p/99099f5a328f

Apache2服務器反代理配置    :  https://www.jianshu.com/p/15538d9f7a67

centos安裝apache   :   https://www.cnblogs.com/itech/archive/2013/04/06/3002762.html

整合apache和tomcat構建Web服務器   :  https://www.cnblogs.com/itech/archive/2011/09/23/2186533.html

Apache如何開啓Rewrite功能        :    http://blog.51cto.com/zlyang/1788758

輕鬆構建Mysql高可用集羣系統   :   https://www.cnblogs.com/itech/archive/2011/10/08/2202177.html

實現Apache,Tomcat負載均衡和集羣 :      https://mp.weixin.qq.com/s/BJHoTzAnbL9YHlI01X-3AA

Linux下使用Apache實現域名轉發(Tomcat/JBOSS)          :      http://os.51cto.com/art/201407/446847.htm

Apache Hive 基本理論與安裝指南        :     https://www.cnblogs.com/yangp/p/8529946.html

企業級Apache詳解       : https://www.cnblogs.com/ftl1012/p/apache.html

企業級Apache詳解2      : https://www.cnblogs.com/ftl1012/p/apache2.html

原  Linux下 Apache服務器配置CGI(perl)      :   https://blog.csdn.net/u012842205/article/details/48213609

 

原  Linux 下修改默認openJDK爲Oracle JDK搭建Apache-Tomcat (Kali)        : https://blog.csdn.net/u012842205/article/details/46472081

Apache與Tomcat關係            :  https://blog.csdn.net/u012842205/article/details/52086030

Apache的主配置文件:/etc/httpd/conf/httpd.conf     :        http://blog.51cto.com/11638832/1846665

apache以mod_proxy實現負載均衡集羣      薦                :          http://blog.51cto.com/zhaochj/1650557

apache以mod_jk方式實現tomcat的負載均衡集羣             :         http://blog.51cto.com/zhaochj/1642199

apache兩種方案三種方式實現反向代理tomcat     薦          :http://blog.51cto.com/zhaochj/1641939

Apache配置壓縮優化時報錯——undefined symbol: inflateEnd 薦        : http://blog.51cto.com/nolinux/1345264

Linux下性能測試工具ab (ApacheBench)    :   https://mp.weixin.qq.com/mp/appmsg/show?__biz=MjM5NTMzNzQxMw==&appmsgid=10000010&itemidx=1&sign=6da6f21df524a577c31005ad605ecab8&mpshare=1&scene=1&srcid=0226VJqVtVsylViWw1BWec5E&uin=&key=&ascene=1&devicetype=Windows+10&version=62060619&lang=zh_CN&winzoom=1

 

Apache配置多個站點            :        https://www.jianshu.com/p/5f8099002abb

Linux網站架構系列之Apache----調優篇      :  http://blog.51cto.com/nolinux/1320638

Linux網站架構系列之Apache----進階篇 薦    :   http://blog.51cto.com/nolinux/1320167

Linux網站架構系列之Apache----部署篇  :  http://blog.51cto.com/nolinux/1319750

日誌分析工具Awstats實戰之Apache篇-多站點日誌分析 薦           : http://blog.51cto.com/nolinux/1318052

 

Web服務基礎一之Apache源碼和YUM安裝 薦     :           http://blog.51cto.com/ityunwei2017/1352138

Web服務基礎二之Apache主配置文件httpd.conf    :    http://blog.51cto.com/ityunwei2017/1352360

Web服務基礎三之Apache虛擬主機、虛擬目錄配置  :         http://blog.51cto.com/ityunwei2017/1352579

Web服務基礎四之Apache訪問控制 薦      :         http://blog.51cto.com/ityunwei2017/1353149

Web服務基礎五之yum安裝配置LAMP環境+博客系統WordPress 薦      :        http://blog.51cto.com/ityunwei2017/1353901

Web服務基礎六之編譯安裝配置RHEL+Apache+MySQL+PHP+ZendOptimize 薦      :        http://blog.51cto.com/ityunwei2017/1360472

Web服務基礎七之Apache日誌文件管理、默認網站目錄更改、防止php***跨站設置、禁止空主機頭 薦       :     http://blog.51cto.com/ityunwei2017/1369871

 

高性能反向代理Apache Traffic Server配置小記 [ats cdn cache]             : http://blog.51cto.com/rfyiamcool/1319479

Apache配置與應用,虛擬目錄;訪問控制;虛擬Web主機(多域名;多端口),   :  http://blog.51cto.com/13728740/2157688  

Apache網頁優化與安全優化(網頁壓縮;網頁緩存;網頁防盜鏈;隱藏版本信息) :  http://blog.51cto.com/13728740/2157405

AWStats日誌分析Apache提供的Web站點訪問狀況   :     http://blog.51cto.com/13728740/2156291

編譯apache出現的兩個小錯誤libexpat.so總結      : https://www.ixdba.net/archives/2017/03/505.htm

 

apache中併發控制參數prefork理解和調優    : https://www.ixdba.net/archives/2017/03/499.htm

 

CentOS7.4 部署 Django + Python3 + Apache + Mod_wsgi           :           https://www.jianshu.com/p/e3afd572f1be

CentOS下安裝Apache Bench進行網站壓力測試 ab工具使用 圖文教程 : https://www.jiloc.com/tag/centos

Hadoop深度運維:Apache集羣原地升級Ambari-HDP : https://mp.weixin.qq.com/s/sVmJ0i758tf9PStkKLRQDg

linux下apache開啓url重寫的方法(詳細說明) : https://www.jb51.net/article/30120.htm

Apache 虛擬目錄和默認首頁的設置  :https://www.jb51.net/article/20806.htm

Linux下模擬http的get/post請求(curl or wget)詳解 : https://www.jb51.net/article/113451.htm

apache服務器一個ip(如:127.0.0.1)和多個域名(虛擬主機)的綁 : https://www.jb51.net/article/59927.htm

apache的access.log和error.log減肥 : https://www.jb51.net/article/19893.htm

Apache2.4.x版wampserver本地php服務器如何讓外網訪問及啓用.hta : https://www.jb51.net/article/61193.htm

Apache下經過shell腳本提交網站404死鏈的方法 :https://www.jb51.net/article/124844.htm 

簡單測試Apache是如何完成負載均衡策略配置 :https://www.jb51.net/article/45349.htm

apache性能測試工具ab使用詳解 :https://www.jb51.net/article/59469.htm

智能監測自動重啓Apache服務器的Shell腳本 : https://www.jb51.net/article/113971.htm

Shell腳本判斷Apache進程是否存在: https://www.jb51.net/article/58764.htm

Shell腳本實現分析apache日誌中ip所在的地區: https://www.jb51.net/article/58877.htm

Shell腳本實現apache日誌中的狀態碼分析: https://www.jb51.net/article/59056.htm

 

 

令Apache中沉睡的無用進程自動退出的方法 : https://www.jb51.net/article/68135.htm

Centos7.4服務器安裝apache及安裝過程出現的問題解決方法 :https://www.jb51.net/article/157871.htm 

在CentOS上安裝搭建PHP+Apache+Mysql的服務器環境 : https://www.jb51.net/article/158201.htm

服務器Apache與Tomcat和Nginx的理解和對比分析詳解 : https://www.jb51.net/article/159028.htm

Apache服務器必備基本安全設置 :https://www.jb51.net/article/48069.htm

apache自建證書實現https : https://www.jianshu.com/p/605065c0d42f

相關文章
相關標籤/搜索