1. 程式人生 > >關於大型網站調優的學習總結之ab測試壓力

關於大型網站調優的學習總結之ab測試壓力

        根據韓順平老師講課筆記整理

        ab.exe 是Apache自帶的一款壓力測試工具,可以測試併發量的大小和某個頁面訪問的時間。

      a  準備首先把自己的程式碼放入Apache的PHP執行目錄下(如下程式碼 名字為ab.php)

<?php
 for($i = 0 ; $i<1000 ; $i++){
	  echo $i."</br>";
   }
?>

        b 在windows .cmd 模式中       >cd E:\wamp\bin\apache\Apache2.2.21\bin\(ab.exe的目錄下)

        c  >ab.exe -n 10000 -c 100  http://localhost/ab.php (  ab.exe –n 訪問的總次數–c  有多少人訪問(併發量)  訪問的頁面url

)

       對結果的分析如下圖所示

       

      當我們把-C調整到500的時候,已經不能正常顯示返回的結果。伺服器已經癱瘓

     會顯示如下圖片

     

      這時候我們能做的就是優化Apache的配置。要了解Apache的MPM

      多路處理模組,Multi-Processing Modules,MPM。目前主要的(我知道的?)一下三種

1.      perfork 預處理程序方式

     2.      worker 工作模式

     3.      winnt  這個一般說是windows採用的.

如何檢視當前Apache的工作模式

  無論在Apache 還是 Linux下 可以用httpd -l 檢視Apache工作的模式

            prefork的工作原理是,控制程序在最初建立“StartServers”個子程序後,為了滿足MinSpareServers設定的需要建立一個程序,等待一秒鐘,繼續建立兩個,再等待一秒鐘,繼續建立四個……如此按指數級增加建立的程序數,最多達到每秒32個,直到滿足 MinSpareServers設定的值為止。這就是預派生(prefork)的由來。這種模式可以不必在請求到來時再產生新的程序,從而減小了系統開銷以增加效能。servrelimit指系統限制最大的程序數,預設值很小如果MaxClients設的比unix預設servrelimit還大,就無效,返回預設值。因此servrelimit

肯定要遠大於apacheMaxClients

     

            優點:preforkMPM使用多個子程序,但每個子程序並不包含多執行緒。每個程序只處理一個連結。在許多系統上它的速度和workerMPM一樣快,但是需要          更多的記憶體。這種無執行緒的設計在某些情況下優於workerMPM:它可以應用於不具備執行緒安全的第三方模組(比如php),且在不支援執行緒除錯的平臺上易於除錯,而且還具有比workerMPM更高的穩定性。

           缺點:耗費記憶體

            Worker工作模式

           相對於prefork,worker全新的支援多執行緒和多程序混合模型的MPM。由於使用執行緒來處理,所以可以處理相對海量的請求,而系統資源的開銷要小於基於程序的伺服器。但是,worker也使用了多程序,每個程序又生成多個執行緒,以獲得基於程序伺服器的穩定性。在configure ?with-mpm=worker後,進行make       編譯、make install安裝。在預設生成的httpd-mpm.conf中有以下預設配置段:
      StartServers 2 
      MaxClients 150 
      MinSpareThreads 25 
      MaxSpareThreads 75 
      ThreadsPerChild 25 
      MaxRequestsPerChild 0 

        Worker 由主控制程序生成“StartServers”個子程序,每個子程序中包含固定的ThreadsPerChild執行緒數,各個執行緒獨立地處理請求。同樣,為了不在請求到來時再生成執行緒,MinSpareThreads和MaxSpareThreads設定了最少和最多的空閒執行緒數;而MaxClients 設定了同時連入的clients最大總數。如果現有子程序 中的執行緒總數不能滿足負載,控制程序將派生新的子程序。MinSpareThreads和 MaxSpareThreads的最大預設值分別是75和250。這兩個引數對Apache的效能影響並不大,可以按照實際情況相應調節。 ThreadsPerChild是worker MPM中與效能相關最密切的指令。ThreadsPerChild的最大預設值是64,如果負載較大,64也是不夠的。這時要顯式使用 ThreadLimit指令,它的最大預設值是20000。Worker模式下所能同時處理的請求總數是由子程序總數乘以ThreadsPerChild 值決定的,應該大於等於MaxClients。如果負載很大,現有的子程序數不能滿足時,控制程序會派生新的子程序。預設最大的子程序總數是16,加大時也需要顯式宣告ServerLimit(最大值是20000)。需要注意的是,如果顯式聲明瞭ServerLimit,那麼它乘以 ThreadsPerChild的值必須大於等於 MaxClients,而且MaxClients必須是ThreadsPerChild的整數倍,否則 Apache將會自動調節到一個相應值。

        3,winnt

       由於當前在Win下進行測試所以可以再當前情況下優化Apache

       (1)   在httpd.conf 檔案中 修改

       # Server-pool management (MPM specific)

       Include conf/extra/httpd-mpm.conf

      (2)   確定當前的apahce是什麼MPM模式

      進入到 apache/bin

      httpd.exe –l

     說明: 看 mpm_xxx.c 如果xxx是 winnt 說明是winnt  ,另外還可能是 perfork 或者 worker

      (3)   修改httpd-mpm.conf 檔案.

     <IfModule mpm_winnt_module>

            ThreadsPerChild      1000 

            MaxRequestsPerChild    0

      </IfModule>

     (4)   重啟apahce ,輸入 ab.exe -n 10000 -c 5000 http://localhost/ab.exe

     測試發現由於修改了最大併發數,剛才請求癱瘓的情況消失了,可以正常返回了。

     參考資料:

     http://blog.chinaunix.net/uid-25266990-id-1753789.html

     傳智播客

相關推薦

關於大型網站調學習總結ab測試壓力

        根據韓順平老師講課筆記整理         ab.exe 是Apache自帶的一款壓力測試工具,可以測試併發量的大小和某個頁面訪問的時間。       a  準備首先把自己的程式碼放入Apache的PHP執行目錄下(如下程式碼 名字為ab.php) <

深度學習演算法調trick總結

1:優化器。機器學習訓練的目的在於更新引數,優化目標函式,常見優化器有SGD,Adagrad,Adadelta,Adam,Adamax,Nadam。其中SGD和Adam優化器是最為常用的兩種優化器,SGD根據每個batch的資料計算一次區域性的估計,最小化代價函式。 學

軟體效能測試分析與調實踐路-效能分析調思想與調技術總結

本文主要闡述軟體效能測試中的一些調優思想和技術,節選自作者新書《軟體效能測試分析與調優實踐之路》部分章節歸納。 一、  效能分析與調優思想 1、效能分析調優模型 效能測試除了為獲取效能指標外,更多是為了發現效能瓶頸和效能問題,然後對效能問題和瓶頸進行分析和調優,在當今網際網路高速發展的時代,效能調優

Lucene學習總結二:Lucene的總體架構

api 要點 iter 不同 blank 應用 文件 score image Lucene總的來說是: 一個高效的,可擴展的,全文檢索庫。 全部用Java實現,無須配置。 僅支持純文本文件的索引(Indexing)和搜索(Search)。 不負責由其他格式的文件抽取純文

機器學習總結第一章緒論

分享 概率 都是 ack 學習 包含 png 分類 post 機器學習總結之第一章緒論 http://www.cnblogs.com/kuotian/p/6141728.html 1.2基本術語 特征向量:即示例,反映事件或對象在某方面的性質。例如,西瓜的色澤,敲聲。

機器學習總結第二章模型評估與選擇

概率密度函數 列聯表 ext 5.1 ima 其中 bsp 泛化能力 分解 機器學習總結之第二章模型評估與選擇 2.1經驗誤差與過擬合 錯誤率 = a個樣本分類錯誤/m個樣本 精度 = 1 - 錯誤率 誤差:學習器實際預測輸出與樣本的真是輸出之間的差異。 訓練誤差:即

2018.3.29學習總結如何運行一個最簡單的Servlet程序

ati get png aid 父類 eclips 網上 自己 nco 1,我編寫了我的第一個Servlet程序。HelloServlet 繼承自HttpServlet。因此需要導入javax.servlet開頭的一系列包,那麽這些包來自哪裏呢?答案是Tomcat安裝目錄下

sql server 性能調 資源等待PAGEIOLATCH_x

sig 子線程 調度 分享 頁面 緩存 windows cpu 想要 一.概念   在介紹資源等待PAGEIOLATCH_x之前,先來了解下從實例級別來分析的各種資源等待的dmv視圖sys.dm_os_wait_stats。它是返回執行的線程所遇到的所有等待的相關信息,該視

sql server 性能調 資源等待 LCk

enter 概述 視圖 png tps mar http count mon 一. 概述   這次介紹實例級別資源等待LCK類型鎖的等待時間,關於LCK鎖的介紹可參考 “sql server 鎖與事務撥雲見日”。下面還是使用sys.dm_os_wait_stats 來查

多線程學習總結 線程池

code service pla ever pro olt def 原理圖 cte 前言:    本文基於jdk1.8。 前段時間換工作,面試時候每次都會問線程的問題,自己對多線程方面的知識沒有花時間研究過,所以一問到線程就懵了,最近特地買了方騰飛老師的《Java並發編程的

學習總結Linux基礎知識

基礎 bug 引用 hosts 個人版 boot -s 發布 分配 在經過了一段時間的學習之後,不但對之前較模糊的知識點有了一個比較清晰的認識,還學到了一些沒學到的東西。下面對這些知識點做一個總結,一是想對這一階段畫上一個比較完美的句號,二是想把這篇博客當做以後的一個筆記之

Hadoop效能調全面總結

一、 Hadoop概述 隨著企業要處理的資料量越來越大,MapReduce思想越來越受到重視。Hadoop是MapReduce的一個開源實現,由於其良好的擴充套件性和容錯性,已得到越來越廣泛的應用。 Hadoop實現了一個分散式檔案系統(Hadoop Distributed File Sys

oracle逐步學習總結oracle分頁查詢(基礎三)

  原創作品,轉載請在文章開頭明顯位置註明出處:https://www.cnblogs.com/sunshine5683/p/10087205.html oracle 的分頁有三種,下面將這三種方式一一列舉,進行分析:   一、根據rowid來分頁   二、根據分

Django學習總結模板templates

- django模板: templates - 模板分為兩個過程: 1, 載入 : loader.get_template('xxx.html') 返回值是一個

Django學習總結--URLS反向解析

URL 與 URI URL : 統一資源定位符 相當於絕對路徑 URI : 統一資源標誌符 相當於相對路徑 - 多個App下URL 的配置方法 工程目錄下的配置 url(r'^App/',views.hello) 這裡需要導包,用alt+enter鍵導包 App專案下

機器學習總結——機器學習專案完整流程

機器學習總結之——機器學習專案的完整流程 1、分析專案需求,明確具體問題   進行一個專案前,首先要做的是要分析專案各個需求,以及明確各個需求所對應的具體問題並將其抽象成一個個數學問題,將專案過程轉換成數學建模過程。   PS:這裡的抽象成數學問題

Redis學習總結(五)釋出訂閱

一、釋出訂閱 釋出訂閱是訊息傳遞的一種方式,即釋出者釋出訊息,訂閱者獲取訊息,中間傳輸的是一種訊息,所以應該有四個必須的要素:釋出者、訂閱(接受)者、通道、訊息。在Redis裡,由於redis分客戶端和服務端,redis服務端提供服務,所以釋出者(publishser)和訂

Django學習總結中介軟體與檔案操作

中介軟體: 面向切面程式設計   底層輕量級外掛 可以介入請求與響應 ​ 咱們以前接觸的程式設計方式: python:面向物件 C語言:面向過程     ​ 喝茶:

javascript浮點數學習總結0.1+0.2

掘金搬來思否 浮點數的儲存格式:IEEE754-64bit 64位組成格式為:S(1位符號位) E(11位階碼)M(52位尾數) 符號位:決定正負,0位正,1位負 階碼:指數位則為階碼-1023,決定了數值的大小 尾數:有效數字,決定了精度 用科學計數法格式則為:

機器學習總結——各種距離彙總

機器學習總結之——各種樣本距離彙總   一般在機器學習模型中會涉及到衡量兩個樣本間的距離,如聚類、K-Nearest Neighbor等,使用的距離可以使歐式距離,也是可以是其它距離,本文對各種距離度量的表示法進行了彙總。 1、歐氏距離   最常見的兩點之間或多