關於大型網站調優的學習總結之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
優點:preforkMPM使用多個子程序,但每個子程序並不包含多執行緒。每個程序只處理一個連結。在許多系統上它的速度和workerMPM一樣快,但是需要 更多的記憶體。這種無執行緒的設計在某些情況下優於workerMPM:它可以應用於不具備執行緒安全的第三方模組(比如php),且在不支援執行緒除錯的平臺上易於除錯,而且還具有比workerMPM更高的穩定性。
缺點:耗費記憶體
Worker工作模式
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、歐氏距離 最常見的兩點之間或多