博客 / 詳情

返回

SPECweb2009調優指南

【寫在前面】飛騰開發者平台是基於飛騰自身強大的技術基礎和開放能力,聚合行業內優秀資源而打造的。該平台覆蓋了操作系統、算法、數據庫、安全、平台工具、虛擬化、存儲、網絡、固件等多個前沿技術領域,包含了應用使能套件、軟件倉庫、軟件支持、軟件適配認證四大板塊,旨在共享尖端技術,為開發者提供一個涵蓋多領域的開發平台和工具套件。點擊這裏開始你的技術升級之旅吧

image.png

本文分享至飛騰開發者平台《SPECweb2009調優指南》

1 介紹

  SPECweb2009 是衡量 Web 服務器性能和能效的標準化基準,可以對 Web 服務器的併發數進行性能測試,評測 Web 服務器能夠支持的最大同時連接數的客户端/服務器(每秒能夠響應的最大請求數)。為充分利用服務器性能,提升SPECweb2009測試結果,可通過增大系統進程數、優化服務器軟件參數、綁核以及優化參數等。

2 環境要求

  測試時使用的全部具體環境要求如下表所示。

項目 説明
機器類型 被測端:飛騰騰雲S2500服務器、測試端:X86服務器
被測端操作系統 CentOS Linux release 7.9.2009 (AltArch)
被測端內核版本 4.19.5l
測試端操作系統 CentOS Linux release 7.6.1810 (Core)
測試端內核版本 4.19.5
Apache 2.4.51

3 測試拓撲圖

  本次測試中,以飛騰騰雲S2500服務器作為Web服務器端,Client端和Besim端均部署在X86服務器上,網卡均使用Mellonx 10G網卡。拓撲圖如下圖所示。本文調優基於Apache服務器軟件,故Web服務器上使用的是Apache軟件。

image.png

4 測試調優手段

4.1 參數調優

4.1.1 增大系統最大進程數

  原理:修改系統的最大進程數,可以提高測試的併發數;
  調優方式可以如下表所示:

參數 修改方式
/etc/security/limits.conf 在文件尾部添加如下內容:
* hard nproc 65536
* soft nproc 65536
* hard nfile 65536
* soft nfile 65536
* soft stack unlimited
* soft core unlimited
* hard core unlimited
* - nofile 65536
vm.max_map_count(client 節點) sysctl -w vm.max_map_count=131060

4.1.2 優化web服務器軟件參數(依據所使用的web服務器軟件而定)

  原理:優化web服務器軟件參數,可以充分利用和整合該軟件的資源,如線程、生存期處理請求數等,提升處理性能。
  調優方式:本次測試使用Apache的Worker多進程處理模式,在測試端和被測端均修改/usr/local/apache2/conf/extra/httpd-mpm.conf文件,修改參考如下
  找到<IfModule mpm_worker_module>,將其他模式全註釋。將worker模式修改如下:

StartServers     6  //初始進程數
ServerLimit     60  //表示服務器允許開啓的最大進程數
ThreadLimit     600 //每個子進程可配備的線程數上限
MaxClients     36000 //允許同時伺服的最大接入請求數量,數值等於ServerLimit* ThreadLimit
MinSpareThreads     25 //空閒線程數,若總的空閒線程數太少,子進程將產生新的空閒線程
MaxSpareThreads     650 //最大空閒線程數,若空閒線程數太多,將殺死多餘空閒線程
ThreadsPerChild     600 //每個子進程建立的常駐線程數
MaxRequestWorkers      20000 //代表最大請求數(因為在Worker MPM模塊中,一個請求數對應一個線程,故也可以理解為最大線程數。理論上,最大線程數不能超過最大進程數與每個進程可創建的線程數的乘積)
MaxRequestsPerChild     0 //設置每個子進程在其生存期內允許伺服的最大請求數量

4.1.3 優化測試參數

  增大java的初始堆和最大堆大小。修改參考如下表所示。

修改文件 建議值
start_client.sh $JAVA -Xms16384m -Xmx16384m -classpath bin/specweb2009.jar:bin/check.jarspecwebclient
start_prime_client.sh $JAVA -Xms16384m -Xmx16384m –classpath bin/specweb2009.jar:bin/check.jar:lib/jcommon-1.0.15.jar:lib/jfreechart-1.0.12.jar specweb

4.1.4 綁核

  原理:將進程和中斷進行綁核,可避免頻繁地核間調度帶來的性能損耗。
  調優方式參考如下:在綁核中進行三方面的綁核,首先進行httpd進程的綁核,在server端和Besim端分別對httpd進程進行綁核,本次調優的httpd進程綁定在0-63上,可根據具體情況調整。httpd進程綁核可查考如下腳本:

#!/bin/bash
NUM=`ps aux | grep -i httpd | grep -v grep | wc -l`
for i in $(seq 1 $NUM)
do
        PID=`ps aux | grep httpd | grep -v grep | awk '{print $2}' | sed -n "$i"p`
        echo $PID
        echo ""
        taskset -pc $1 $PID
done

  然後,進行中斷綁核,本次調優將Mellonx網卡中斷綁定在0-7上,可根據具體情況調整。
  最後在Client端進行對測試進程進行綁核,修改start_client.sh和start_prime_client.sh文件,修改如下:

#vim start_client.sh
taskset -ac CPU java -Xms16384m -Xmx16384m -classpath bin/specweb2009.jar:bin/check.jar 
specwebclient 
#vim start_prime_client.sh
taskset -ac CPU java -Xms16384m -Xmx16384m –classpath 
bin/specweb2009.jar:bin/check.jar:lib/jcommon-1.0.15.jar:lib/jfreechart-1.0.12.jar specweb

5 問題分析

5.1 運行期間遇到SocketTimeoutException

5.1.1 問題描述和分析

  當遇到SocketTimeoutException問題時,可能是你的服務器的session已超載,或者你的httpd的配置出現問題。出錯如圖下圖所示。

image.png

5.1.2 解決辦法

  原先mpm_worker_module中的MaxRequestWorkers值只有400,導致測4000 session出錯,增大/usr/local/apache2/conf/extra/httpd-mpm.conf 中的MaxRequestWorkers的值,然後重啓httpd服務。

5.2 報錯404

5.2.1 問題描述和分析

  當出現報錯404時,表示訪問的頁面沒找到,這可能是準備的資源數量少於訪問的session數量。出錯截圖如下圖所示。

image.png

5.2.2 解決辦法

  增大web服務器端和Besim服務器端support_downloads_props.rc 和 support_image_props.rc文件中的SIMULTANEOUS_SESSIONS 值,重新執行如下命令:

#cd /web2009-1.20/Wafgen
#./Wafgen.sh unix/support_downloads_props.rc
#./Wafgen.sh unix/support_image_props.rc

6 調優結果

6.1 測試命令

  首先生成測試所需的資源,先修改Client端和web server端/web2009-1.20/Wafgen/unix/目錄下的support_downloads_props.rc和support_image_props.rc中SIMULTANEOUS_SESSIONS值,參考值大小為18000,接着執行如下命令:

#cd /web2009-1.20/Wafgen
#./Wafgen.sh unix/support_downloads_props.rc
#./Wafgen.sh unix/support_image_props.rc
最後到Client端的/web2009-1.20/Client和/web2009-1.20/Prime_Client下分別執行以下命令:
# ./start_client.sh    //先在Client目錄下執行此命令
# ./start_prime_client.sh

6.2 結果比較

  開始時,未經過調優,當Test.config中的SIMULTANEOUS_SESSIONS值為300時,測試結果為48671 requests, 79.1% good;調優後 SIMULTANEOUS_SESSIONS的值可以增至9000,測試結果為1607377 requests, 99.78% good。調優後具體每個不同 SIMULTANEOUS_SESSIONS結果如表所示。測試結果部分截圖如下圖所示。

SIMULTANEOUS_SESSIONS 總請求數 請求Good比例
4000 713671 99.96%
5000 892886 99.94%
9000 1607377 99.78%

  未調優SIMULTANEOUS_SESSIONS為300的結果

image.png

  調優後SIMULTANEOUS_SESSIONS為9000的結果

image.png


推薦閲讀

  • 基於飛騰騰雲S2500的SPECWeb2009部署指南
  • SPDK的本地環境搭建和本地測試方法

歡迎廣大開發者來飛騰開發者平台獲取更多前沿技術文檔及資料

如開發者在使用飛騰產品有任何問題可通過在線工單聯繫我們



版權所有。飛騰信息技術有限公司 2023。保留所有權利。

未經本公司同意,任何單位、公司或個人不得擅自複製,翻譯,摘抄本文檔內容的部分或全部,不得以任何方式或途徑進行傳播和宣傳。

商標聲明

Phytium和其他飛騰商標均為飛騰信息技術有限公司的商標。

本文檔提及的其他所有商標或註冊商標,由各自的所有人擁有。

注意

本文檔的內容視為飛騰的保密信息,您應當嚴格遵守保密任務;未經飛騰事先書面同意,您不得向任何第三方披露本文檔內容或提供給任何第三方使用。

由於產品版本升級或其他原因,本文檔內容會不定期進行更新。除非另有約定,本文檔僅作為使用指導,飛騰在現有技術的基礎上盡最大努力提供相應的介紹及操作指引,但飛騰在此明確聲明對本文檔內容的準確性、完整性、適用性、可靠性的等不作任何明示或暗示的保證。

本文檔中所有內容,包括但不限於圖片、架構設計、頁面佈局、文字描述,均由飛騰和/或其關聯公司依法擁有其知識產權,包括但不限於商標權、專利權、著作權等。非經飛騰和/或其關聯公司書面同意,任何人不得擅自使用、修改,複製上述內容。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.