91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

詳述Linux系統中Apache網頁深入優化

發布時間:2020-06-24 22:00:34 來源:網絡 閱讀:3918 作者:SiceLc 欄目:系統運維

ab壓力測試

  • Apache自帶壓力測試工具ab,簡單易用,且可以模擬各種條件對Web服務器發起測試請求
  • ab工具可以直接在Web服務器本地發起測試請求,這對于需要了解服務器的處理性能至關重要,因為它不包括數據的網絡傳輸時間以及用戶PC本地的計算時間,從而可以通過觀測各種時間指標判斷Web服務器的性能,以便進行參數的優化調整

ab壓力測試工具

  • 在進行性能調整優化過程中,可用ab壓力測試工具進行優化效果的測試
    • 優化前先使用ab進行壓力測試
    • 優化后,重啟服務,再使用ab進行壓力測試
    • 對比兩次測試的結果,看優化效果是否明顯
    • 為了能更客觀的評價web服務的性能,一般優化前后都要進行多次測試,取測試結果的平均值進行對比

ab工具使用

  • 命令格式
    ab [options] 網站網址

  • 參數說明
    -n、-c、-t、-v

  • 示例

    /usr/local/httpd/bin/ab -n5000 -c900 www.bt.com/index.html
    在測試時要根據情況調整求總數與并發用戶數

ab測試結果關鍵參數說明

參數 描述
Server Software http響應數據的頭信息
Server Hostname 請求的url中的主機名稱
Server Port web服務器軟件的監聽端口
Document Path 請求的url根的絕對路徑
Document Length http響應數據的正文長度
Concurrency Level 并發的用戶數
Time taken for tests 所有這些請求被處理完成所花費的時間總和
Complete requests 表示總請求數
Failed requests 失敗的請求總數
Total transferred 請求的響應數據長度總和
Requests per second 服務器的吞吐率,每秒處理的請求數
Time per request 用戶平均請求等待時間
Time per request 每個請求實際運行時間的平均值
Percentage of the requests served within a certain time (ms) 描述每 個請求處理時間的分布情況

測試實例

[root@localhost bin]# ab -n 20000 -c 500 www.kgc.com/index.html     //使用命令測試
This is ApacheBench, Version 2.3 <$Revision: 1807734 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.kgc.com (be patient)
Completed 2000 requests
Completed 4000 requests
Completed 6000 requests
Completed 8000 requests
Completed 10000 requests
Completed 12000 requests
Completed 14000 requests
Completed 16000 requests
Completed 18000 requests
Completed 20000 requests
Finished 20000 requests

Server Software:        Apache
Server Hostname:        www.kgc.com
Server Port:            80

Document Path:          /index.html
Document Length:        68 bytes

Concurrency Level:      500
Time taken for tests:   1.237 seconds
Complete requests:      20000
Failed requests:        0
Total transferred:      7300000 bytes
HTML transferred:       1360000 bytes
Requests per second:    16169.67 [#/sec] (mean)
Time per request:       30.922 [ms] (mean)
Time per request:       0.062 [ms] (mean, across all concurrent requests)
Transfer rate:          5763.60 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    5  60.3      1    1004
Processing:     0   14  49.6      6     808
Waiting:        0   12  49.5      5     808
Total:          1   19  78.2      8    1201

Percentage of the requests served within a certain time (ms)
  50%      8
  66%      9
  75%      9
  80%     10
  90%     13
  95%     17
  98%    211
  99%    406
 100%   1201 (longest request)

Apache工作模式

Apache工作模式介紹

  • Apache作為現今web服務器用的最廣泛也是最穩定的開源服務器軟件
  • 其工作模式有許多種,源碼包安裝httpd時可查看httpd-mpm.conf文件,該文件位于extra/conf目錄中
  • 目前主要有兩種模式:
    • event模式、worker模式
    • prefork模式
[root@apache1 bin]# ./httpd -l       //查看apache當前工作模式
Compiled in modules:
core.c
mod SO.c
http_ core.c
event.c

event作模式介紹

  • eventApache最新的工作模式,它和worker模式很像,不同的是在于它解決了keep-alive長連接的時候占用線程資源被浪費的問題
  • event工作模式在遇到某些不兼容的模塊時,會失效,將會回退到worker模式
  • event工作模式需要Linux系統(Linux 2.6+)epoll的支持,才能啟用。需要補充的是HTTPS的連接(SSL)

event工作方式

  • event工作模式中,會有一些專門的線程用來管理這些keep-alive類型的線程
  • 當有真實請求過來的時候,將請求傳遞給服務器的線程,執行完畢后,又允許它釋放
  • 這樣,一個線程就能處理幾個請求了,實現了異步非阻塞。這增強了在高并發場景下的請求處理

event參數講解

  • httpd-mpm.conf配置文件中, 以下是prefork模塊的定義

    < IfModule mpm_event_module>
     StartServers         3
     MinSpareThreads      75
     MaxSpareThreads      250
     ThreadsPerChild      25
     MaxRequestWorkers    400
     MaxConnectionsPerChild 0
    </lfModule>
  • 參數說明

    參數 說明
    StartServers 服務啟動時初始的進程數,默認3
    MinSpare Threads 最小的空閑子進程數,默認75
    MaxSpare Threads 最大的空閑子進程數,默認250
    ThreadsPerChild 每個子進程產生的線程數量,默認是25
    MaxRequestWorkers 限定同一時間內客戶端最大接入的請求數量,默認是400
    MaxConnectionsPerChild 每個子進程在其生命周期內允許最大的請求數量,如果請求總數已經達到這個數值,子進程將會結束,如果設置為0,子進程將永遠不會結束。將該值設置為非0值,可以防止運行PHP導致的內存泄露

event優化建議

  • 可根據生產環境進行調試,以確定合適參數
  • 優化參考
<IfModule mpm_event_module>
ServerLimit        1000
StartServers         20
MinSpareThreads          25
MaxSpareThreads          1200
ThreadsPerChild         50
MaxRequestWorkers         2000
MaxConnectionsPerChild     1000
</IfModule>

prefork作模式介紹

  • prefork是一個多路處理模塊(MPM),實現了一個進程型的、預派生的web服務器,適合于沒有線程安全庫、需要避免線程兼容性問題的系統
  • 在要求每個請求相互獨立的情況下具有很好的特性,若一個請求出現問題不會影響到其他請求
  • 具有很強的自我調節能力,只需要很少的配置指令進行調整就可以適合于企業應用要求
  • 最重要的是將MaxClients設置為一個足夠大的數值以處理潛在的請求高峰,同時又不能太大,以避免所需的內存超出物理內存的大小

prefork工作模式方式

  • 一個單獨的控制進程(父進程)負責產生子進程,子進程用于監聽請求并作出應答,因此在內存中會一直存在一些備用的(spare)或是空閑的子進程用3 F響應新的請求,可加快響應速度
  • 父進程通常以root身份運行,以便綁定80端口,子進程通常以一個低特權的用戶運行,可通過配置項的UserGroup配置
  • 運行子進程的用戶必須要對網站內容有讀取權限,但是對其他資源必須擁有盡可能少的權限,以保證系統安全
  • 編譯安裝時沒有指定工作模式,默認會使用prefork模式,可用httpd -l查看

prefork參數講解

  • httpd-mpm.conf配置文件中,以下是prefork模塊的定義

    < IfModule mpm_prefork_module>
    StartServers        20
    MinSpareServers      10
    MaxSpareServers       50
    MaxClients           150
    MaxRequestsPerChild   0
    </lfModule>
  • 參數說明
參數 說明
ServerLimit 最大進程數
StartServers 啟動的時候創建的進程數量
MinSpareServers 最少空閑進程
MaxSpareServers 最多空閑進程
MaxClients 最多創建多少個子進程用來處理請求
MaxRequestsPerChild 每個進程處理的最大請求數,達到請求數,進程即被銷毀,如果設置為0,子進程永遠不會結束

prefork優化建議

  • 可根據生產環境進行調試,以確定合適參數
  • 優化參考
<IfModule mpm_prefork_module>
   ServerLimit      1000
   StartServers     10
   MinSpareServers    10
   MaxSpareServers    30
   MaxClients        1000
   MaxRequestsPerChild   5000
</IfModule>

worker工作模式介紹

  • worker也是多路處理模塊(MPM),使網絡服務器支持混合的多線程多進程
  • 由于使用線程來處理請求,所以可以處理海量請求,而系統資源的開銷小于基于進程的MPM
  • 但是也使用了多進程,每個進程又有多個線程,以獲得基于進程的MPM的穩定性
  • 控制該MPM的最重要的指令是:控制每個子進程允許建立的線程數ThreadsPerChild指令和控制允許建立的總線程數的MaxClients指令

worker工作方式

  • 每個進程能夠擁有的線程數量是固定的,服務器會根據負載情況增加或減少進程數量
  • 一個單獨的控制進程(父進程)負責子進程的建立。每個子進程能夠建立ThreadsPerChild數量的服務線程和一個監聽線程,監聽線程監聽接入請求并將其傳遞給服務線程處理和應答
  • Apache總是會維持一個備用(spare)或是空閑的服務線程池,客戶端無須等待新線程或新進程的建立即可得到服務
  • 父進程一-般都是以root身份啟動,以綁定80端口;隨后,Apache以較低權限的用戶建立子進程和線程
  • UserGroup指令用于配置Apache子進程的運行用戶。子進程要對網頁內容擁有讀權限,但應該盡可能限制權限

worker參數講解

參數 說明
ServerLimit 最大進程數,默認值是"16"
ThreadLimit 每個子進程的最大線程數,默認值是“64”
StartServers 服務器啟動時建立的子進程數,默認值是"3"
MaxClients 允許同時接受的最大接入請求數量(最大線程數量)
MinSpareThreads 最小空閑線程數默認值是"75"
MaxSpareThreads 設置最大空閑線程數。默認值是"250"
ThreadsPerChild 每個子進程建立的常駐的執行線程數。默認值是25
MaxRequestsPerChild 設置每個子進程在其生存期內允許伺服的最大請求數量。設置為"0",子進程將永遠不會結束

worker優化建議

  • 優化時要根據企業網站情況進行調試
<IfModule mpm_worker_module>
   ServerLimit       40
   ThreadLimit        200
   StartServers        20
   MaxClients        1000
   MinSpareThreads      25
   MaxSpareThreads      100
   ThreadsPerChild       200
   MaxRequestsPerChild   1000
</IfModule>

Apache目錄屬性

  • 目錄的權限設置使用&lt;Directory目錄路徑&gt;&lt;/Directory&gt;這對語句為主目錄或虛擬目錄設置權限
  • 它們是一對容器語句,必須成對出現,它們之間封裝的是具體的設置目錄權限語句,這些語句僅對被設置目錄及其子目錄起作用

目錄屬性參數

參數 作用
Options 設置在特定目錄使用哪些特性
AllowOverride 允許存在于.htaccess文件中的指令類型
Require 設置目錄的訪問控制
Indexes 當用戶訪問該目錄時,但沒有指定要訪問哪個文件,而且目錄下不存在默認網頁時,返回目錄中的文件和子目錄列表
MultiViews 內容協商的多重視圖,Apache的一 個智能特性。當訪問目錄中不存在的對象時
ExecCGI 允許在該目錄下執行CGI腳本
FollowSymLinks 在該目錄下允許文件系統使用符號連接
Includes 允許服務器端包含功能
IncludesNoExec 允許服務器端包含功能,但禁止執行CGI腳本
All 包含除了MultiViews之外所有特性,如果沒有Options語句,默認為All

優化建議

  • 企業配置舉例
    • Options應該設為None,以防止目錄上內容暴露出去,造成安全隱患
    • AllowOverride設為None,禁. 止使用.htaccess文件,而將目錄訪問控制放在主配置文件的&lt;Directory&gt;&lt;/Directory&gt;之間
    • 根據目錄的企業需求設置好Require的控制對象,以控制客戶端的訪問
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桂平市| 新竹市| 平果县| 鲁甸县| 滕州市| 新河县| 屏南县| 兴山县| 镇平县| 那曲县| 师宗县| 大余县| 南部县| 汨罗市| 河津市| 武宣县| 石柱| 嘉鱼县| 柯坪县| 彭泽县| 双流县| 乌恰县| 万全县| 嘉荫县| 德安县| 老河口市| 武安市| 鄂托克旗| 东宁县| 阜南县| 应城市| 舞阳县| 苏州市| 河北区| 吴堡县| 永川市| 余江县| 略阳县| 河池市| 塘沽区| 诸暨市|