李兵
摘要:該文以MOODLE平臺(tái)為例,對(duì)教學(xué)資源平臺(tái)進(jìn)行性能優(yōu)化及本地化實(shí)踐研究,目的是為了搭建一個(gè)典型的LNMP應(yīng)用,為智慧校園實(shí)踐項(xiàng)目,提供一個(gè)實(shí)用和完善的測(cè)試環(huán)境,同時(shí)了解系統(tǒng)的測(cè)試和優(yōu)化的全過(guò)程。形成相對(duì)成熟的配置方法,為類似項(xiàng)目提供參考,提升理論研究水平、共享平臺(tái)建設(shè)經(jīng)驗(yàn)。
關(guān)鍵詞:Linux;服務(wù)器;高并發(fā);性能優(yōu)化
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2019)31-0019-02
本研究來(lái)源于江蘇省教育科學(xué)研究院2018年度智慧校園專項(xiàng)課題,教學(xué)資源平臺(tái)性能優(yōu)化及本地化實(shí)踐研究——以MOODLE平臺(tái)為例,項(xiàng)目的目的是為了在職業(yè)院校中實(shí)施部署MOODLE教學(xué)資源平臺(tái)環(huán)境,搭建一個(gè)典型的LNMP應(yīng)用并進(jìn)行性能優(yōu)化,讓MOODLE平臺(tái)既可用于智慧校園內(nèi)部的教育教學(xué),也可以用于數(shù)字化教學(xué)資源的本地化。在本次研究中,希望能夠在涉及的各項(xiàng)性能測(cè)試項(xiàng)目中,提供一個(gè)較實(shí)用和完善的測(cè)試環(huán)境,了解系統(tǒng)的測(cè)試和優(yōu)化的整個(gè)過(guò)程。平臺(tái)的測(cè)試優(yōu)化數(shù)據(jù)和分析結(jié)果也可以為類似項(xiàng)目提供參考,形成相對(duì)成熟的配置模式,使得將來(lái)的技術(shù)理論提升和平臺(tái)建設(shè)經(jīng)驗(yàn)共享成為可能。
1平臺(tái)性能優(yōu)化概況
一般來(lái)說(shuō),平臺(tái)性能優(yōu)化的內(nèi)容包括三個(gè)方面:客戶端優(yōu)化、網(wǎng)絡(luò)性能優(yōu)化和服務(wù)器端性能優(yōu)化。從服務(wù)器端來(lái)說(shuō),又可以分為操作系統(tǒng)、WEB應(yīng)用、數(shù)據(jù)庫(kù)、PHP引擎及應(yīng)用平臺(tái)性能優(yōu)化?;谛阅軠y(cè)試優(yōu)化的重要性,對(duì)于大量構(gòu)建在基于LNMP構(gòu)架上的系統(tǒng),究竟性能如何以及如何優(yōu)化,成了一個(gè)在理論研究和實(shí)踐項(xiàng)目中都十分重要的課題。本研究限于篇幅,在服務(wù)器操作系統(tǒng)上選擇Linux發(fā)行版Debian 9.9版本,重點(diǎn)對(duì)虛擬服務(wù)器的硬件環(huán)境搭配如CPU、內(nèi)存、硬盤的選擇等方面來(lái)優(yōu)化。
在服務(wù)器操作系統(tǒng)及平臺(tái)應(yīng)用的選擇上,選擇當(dāng)今能與J2EE和.Net齊名的web服務(wù)典型架構(gòu)LAMP。LAMP通常是指由在Linux操作系統(tǒng)安裝Apache,加32 Mysql數(shù)據(jù)庫(kù)、PHP腳本語(yǔ)言來(lái)搭建Web服務(wù)器,考慮到本項(xiàng)目場(chǎng)景實(shí)施,要求并發(fā)連接數(shù)高,性能要穩(wěn)定,運(yùn)行又穩(wěn)定成本要低,所以本項(xiàng)目中使用Nginx替代Apache作為WEB服務(wù)即LNMP,兩者互有優(yōu)劣,Nginx處理靜態(tài)文件速度快而且消耗資源少,性能可靠及使用范圍廣。由于以上軟件全部開(kāi)源,彼此相互獨(dú)立,由于在使用上有默契,經(jīng)常的作為配套軟件來(lái)配合使用。在互聯(lián)網(wǎng)已知數(shù)據(jù)的網(wǎng)站中,有超過(guò)半數(shù)的流量基于LAMP或者LNMP架構(gòu);包括百度、騰訊、新浪等多家全球著名的網(wǎng)站。LNMP架構(gòu)流行的關(guān)鍵因素可以歸納為:搭建簡(jiǎn)單、安全穩(wěn)定、低成本和擴(kuò)展性良好等,其應(yīng)用范圍也從簡(jiǎn)單和小型的應(yīng)用擴(kuò)展到復(fù)雜、大型的系統(tǒng)應(yīng)用。
LNMP的性能優(yōu)化分為:(1)Linux系統(tǒng)的優(yōu)化;(2)Nginx配置事件驅(qū)動(dòng)架構(gòu);(3)使用加速器優(yōu)化PHP,優(yōu)化緩存;(4)對(duì)Mar-iaDB數(shù)據(jù)庫(kù)服務(wù)器優(yōu)化。在各項(xiàng)準(zhǔn)備工作完成的基礎(chǔ)上,具體研究工作包括:結(jié)合LNMP架構(gòu)原理,分析架構(gòu)優(yōu)化具體實(shí)施步驟;選擇MOODLE平臺(tái)作為典型應(yīng)用完成測(cè)試環(huán)境搭建,完成平臺(tái)搭建和構(gòu)建準(zhǔn)備對(duì)測(cè)試環(huán)境的性能測(cè)試及相關(guān)分析;使用測(cè)試工具AB實(shí)施對(duì)LNMP架構(gòu)系統(tǒng)的性能測(cè)試研究。
2平臺(tái)性能優(yōu)化配置過(guò)程
本研究涉及的測(cè)試環(huán)境搭建,基于職業(yè)院校對(duì)性能測(cè)試環(huán)境搭建的要求,技術(shù)上首先深入學(xué)習(xí)并理解LNMP架構(gòu)的原理和性能測(cè)試和優(yōu)化的相關(guān)技術(shù),完成技術(shù)和知識(shí)的積累。為了搭建一個(gè)可以為學(xué)校業(yè)務(wù)提供支撐的測(cè)試環(huán)境,還要學(xué)習(xí)基于LNMP架構(gòu)的性能測(cè)試分析,為平臺(tái)性能優(yōu)化找到人手點(diǎn)。在此基礎(chǔ)之上,針對(duì)學(xué)校的情況在硬件環(huán)境上實(shí)施了平臺(tái)的搭建工作。在完成測(cè)試環(huán)境的搭建之后,還需要對(duì)測(cè)試工具AB關(guān)鍵技術(shù)進(jìn)行了深入研究,接著將MOODLE平臺(tái)作為測(cè)試環(huán)境的真實(shí)環(huán)境進(jìn)行了全面的測(cè)試和運(yùn)行,并列出了全面的數(shù)據(jù)和測(cè)試結(jié)果的分析,包括測(cè)試的配置和設(shè)置和對(duì)應(yīng)的實(shí)際意義。性能測(cè)試研究不僅讓我們深入理解了性能測(cè)試的過(guò)程,更將性能測(cè)試的意義和進(jìn)一步的系統(tǒng)優(yōu)化聯(lián)系了起來(lái),將測(cè)試環(huán)境的性能表現(xiàn)列舉了出來(lái),為測(cè)試環(huán)境的性能優(yōu)化打下了基礎(chǔ)。
本項(xiàng)目在經(jīng)過(guò)研究和學(xué)習(xí)相關(guān)文檔之后,根據(jù)項(xiàng)目的需要,首先確定了平臺(tái)、測(cè)試工具,需要完成的基本工作,設(shè)計(jì)了實(shí)施方案,并確定了目標(biāo)方向。本次性能測(cè)試和優(yōu)化項(xiàng)目的LNMP架構(gòu)是搭建是構(gòu)建在筆記本(配置為15-6500U+8G)、普通Pcf配置為15-4590+16G)上,服務(wù)器采用HP ProLiant BIA60G9虛擬平臺(tái)(配置為E5-2640V3+128G),虛擬機(jī)中的操作系統(tǒng)及平臺(tái)軟件采用的是Debian 9、Nginx 1.10.3、Maria DB 10.1.38、PHP 7.0.33;應(yīng)用平臺(tái)采用MOODLE 3.4.8來(lái)完成。LNMP架構(gòu)基本構(gòu)建和應(yīng)用平臺(tái)搭建,后期使用Apache Bench軟件工具中的AB組件進(jìn)行相關(guān)測(cè)試。測(cè)試過(guò)程中重點(diǎn)關(guān)注了Requestsper second參數(shù),RPS吞吐率fRequests per second),縮寫(xiě)RPS。計(jì)算公式:Requests per second=Complete requests/Time takenfor tests,即吞吐率=總請(qǐng)求數(shù)/處理這些請(qǐng)求的總計(jì)完成時(shí)間。吞吐率是服務(wù)器并發(fā)處理能力的量化描述,單位是reqs/s,指的是某個(gè)并發(fā)用戶數(shù)下單位時(shí)間內(nèi)處理的請(qǐng)求數(shù)。某個(gè)并發(fā)用戶數(shù)下單位時(shí)間內(nèi)能處理的最大的請(qǐng)求數(shù),稱之為最大吞吐率。首先選擇一個(gè)固定參數(shù),然后修改相關(guān)參數(shù),重啟服務(wù)器系統(tǒng),重復(fù)執(zhí)行ab-c100-n1000 URL命令,其中參數(shù)c為并發(fā)連接數(shù)(The number of concurrent connections)是服務(wù)器某個(gè)時(shí)刻所接受的請(qǐng)求數(shù)目,也就是某個(gè)時(shí)刻所接受的會(huì)話數(shù)目。參數(shù)n為并發(fā)用戶數(shù)(The number of concurrent users,ConcurrentLevel)是指服務(wù)器某個(gè)時(shí)刻所能接受的用戶數(shù),一個(gè)用戶可能產(chǎn)生多個(gè)會(huì)話,所以并發(fā)用戶數(shù)和并發(fā)連接數(shù)并不重復(fù)。重復(fù)執(zhí)行15-20次,記錄有效數(shù)據(jù)10次,去掉偏離最大的高值和低值,獲得該硬件配置的RPS數(shù)據(jù)。其次修改參數(shù),再進(jìn)行一輪測(cè)試,記錄數(shù)據(jù)做對(duì)比研究。
1)在筆記本中測(cè)試內(nèi)存及CPU核數(shù)對(duì)平臺(tái)性能影響
用于測(cè)試的筆記本配置為17-6500U的CPU、4G*2內(nèi)存、SSD硬盤、操作系統(tǒng)WINDOWS 7,安裝虛擬機(jī)版本為VMl4。虛擬機(jī)配置的內(nèi)存分別為512M、lG、2G三種,CPU分配的核心1C、2c、4C、2*2C分別代表CPU的內(nèi)核數(shù)量為一核、兩核、四核和CPU兩核。每次測(cè)試都是在修改虛擬機(jī)硬件配置后并重啟操作系統(tǒng),測(cè)試13-20次,記錄有效的RPS數(shù)據(jù)。
配置分別為:512M+1C、512+2C、512+4C、512+2*2C、1G+1C、1G+2C、1G+4C、1G+2*2C、2G+IC、2G+2C、2G+4C、2G+2*2C,測(cè)得RPS值為:38.99、67.56、82.53、78.07、39.28、66.31、83.23、77.41、39.11、65.95、81.46、73.06。
從以上測(cè)試對(duì)比中可以看出:(1)CPU的內(nèi)核數(shù)增加提升了系統(tǒng)性能,兩核比一核明顯提升約80%;四核比兩核提升約25%。在同等配置下核數(shù)增加過(guò)程中,內(nèi)核數(shù)量對(duì)性能提升有重要意義。(2)內(nèi)存數(shù)量從512M、1G到2G,對(duì)系統(tǒng)性能提升基本沒(méi)有影響,甚至數(shù)據(jù)在正負(fù)誤差范圍內(nèi)。(3)在四核心CPU對(duì)比中,單CPU四核比雙CPU兩核性能高5%。
2)在PC中測(cè)試網(wǎng)絡(luò)環(huán)境對(duì)平臺(tái)性能的影響
用于測(cè)試的PC配置為15-4590的四核CPU、8G*2內(nèi)存、SSD硬盤、操作系統(tǒng)WINDOWS 7,安裝虛擬機(jī)版本為VMl4。配置虛擬機(jī)的內(nèi)存分別為512M、2G、4G、8G四種,CPU分配的核心數(shù)量分別為一核、兩核、四核和2*2核。本機(jī)表示在虛擬服務(wù)器的本地進(jìn)行AB測(cè)試,網(wǎng)絡(luò)表示從局域網(wǎng)內(nèi)其他終端進(jìn)行AB測(cè)試。每次測(cè)試在修改配置后測(cè)試,記錄有效數(shù)據(jù)。
硬件配置為512M+1C、2G+IC、2G+2C、4G+2C、4G+2*2C、4G+1*4C、8G+2*2C、8G+1*4C,本機(jī)測(cè)試為54.42、60.39、83.39、86.33、108.13、108.17、110.04、109.23網(wǎng)絡(luò)測(cè)試為47.15、51.74、81.43、84.28、105.69、104.22、106.46、107.57。
從測(cè)試數(shù)據(jù)對(duì)比中可以看出:(1)CPU的內(nèi)核數(shù)增加提升了系統(tǒng)性能,內(nèi)存數(shù)量對(duì)性能提升影響不大。(2)網(wǎng)絡(luò)對(duì)于虛擬機(jī)的平臺(tái)性能有影響,局域網(wǎng)內(nèi)部使用性能下降大約10%,內(nèi)存配置大(4G或者8G)影響小一點(diǎn),數(shù)據(jù)顯示約為5%。
3)在服務(wù)器中測(cè)試硬盤及內(nèi)存對(duì)平臺(tái)性能的影響
用于測(cè)試的HP刀片服務(wù)器配置為E5-2640 v3的八核CPU、16G*8內(nèi)存、SSD硬盤、虛擬化平臺(tái)為VM ESX16.5,安裝虛擬機(jī)版本為VMl4。配置虛擬機(jī)的內(nèi)存分別為8G、16G、32G、64G、128G五種,CPU分配的核心數(shù)量分別為2*2核、2*4核、1*4核、1*6核和2*3核。每次測(cè)試都是指定程式記錄數(shù)據(jù)。
配置第1組為8G+2*2、8G+2*4、16G+2*2、16G+2*4、32G+2*2、32G+2*4、64G+2*2、64G+2*4,RPS值分別138.22、124.14、146.13、127.35、141.90、128.32、151.20、130.63;配置第2組128G+2*2、128G+2*4、16G+2*2、16G+2*2、16G+1*4、8G+1*4、8G+2*3、8G+1*6,RPS值148.29、130.05、146.39、138.82、189.24、180.18、128.81、127.24。
從以上測(cè)試對(duì)比中可以看出:(1)刀片服務(wù)器CPU的性能比PC強(qiáng)勁,所以同樣配置情況下性能有提升。(2)CPU的內(nèi)核數(shù)量從2*2C、2*3C、1*6C到2*4C這個(gè)順序看,性能提升有限。內(nèi)存即使擴(kuò)大到64G和128G,系統(tǒng)平臺(tái)性能也沒(méi)有很大變化。(3)在四核心CPU對(duì)比中,單CPU四核即1*4C配置性能最強(qiáng),比其他核數(shù)量性能高至少25%。
3平臺(tái)性能配置優(yōu)化總結(jié)
綜上研究所得,如果在虛擬服務(wù)器中實(shí)施部署LNMP應(yīng)用MOODLE平臺(tái),推薦使用8G或者16G內(nèi)存,CPU的核心選擇1*4C,使用SSD硬盤作為存儲(chǔ)環(huán)境,這一組合是對(duì)MOODLE平臺(tái)的應(yīng)用來(lái)說(shuō)性價(jià)比較高,其AB測(cè)試的主要結(jié)果RPS值最高可達(dá)189T/S,即使在局域網(wǎng)中使用性能下降5-10%,也可以滿足200人以上的實(shí)時(shí)并發(fā)。如果使用更大內(nèi)存比如32G或者64G,將所有數(shù)據(jù)全部裝入內(nèi)存運(yùn)行,應(yīng)該可以具有更大的適用范圍和應(yīng)用前景。
基于LNMP的測(cè)優(yōu)化還有其中各組件的分別優(yōu)化。LNMP組件中Nginx的配置優(yōu)化;對(duì)PHP的設(shè)置,操作碼緩存以及優(yōu)化;基于Mafia DB數(shù)據(jù)庫(kù)的查詢,包括緩查詢和查詢緩存優(yōu)化等,對(duì)MOODLE平臺(tái)的性能都有影響,可以作為下一步研究的重點(diǎn)??傊?,本研究在性能最優(yōu)理論指導(dǎo)下,對(duì)設(shè)備硬件配置對(duì)平臺(tái)性能的影響進(jìn)行了充分對(duì)比研究,使得應(yīng)用平臺(tái)的系統(tǒng)性能得到有效提升,做出了一次有益的嘗試。