prestashop 是一個(gè)用 php 開發(fā)的專業(yè)、免費(fèi)、開源電子商務(wù)平臺(tái),旨在為從初創(chuàng)公司到大型企業(yè)的企業(yè)提供啟動(dòng)、管理和擴(kuò)展其在線商店的基礎(chǔ)設(shè)施。
prestashop 提供豐富的可定制主題選擇和一整套電子商務(wù)功能,支持廣泛的功能,例如產(chǎn)品管理、安全支付、運(yùn)輸和庫存管理,直接開箱即用。
如何提高應(yīng)用程序性能
通過調(diào)優(yōu)提高應(yīng)用程序性能最好通過解決以下領(lǐng)域的綜合方法來實(shí)現(xiàn):
服務(wù)器資源 — cpu、內(nèi)存、存儲(chǔ)
軟件配置——linux、nginx、php…
數(shù)據(jù)庫管理系統(tǒng)(dbms)配置——mysql、postgresql
優(yōu)化數(shù)據(jù)庫方案并更改索引
優(yōu)化應(yīng)用程序 – 代碼、查詢、架構(gòu)……
許多經(jīng)驗(yàn)豐富的 prestashop 開發(fā)人員并不將數(shù)據(jù)庫性能調(diào)優(yōu)視為提高應(yīng)用程序性能的機(jī)會(huì),因?yàn)樗麄儗?duì)此領(lǐng)域知之甚少。他們花費(fèi)了大量時(shí)間來優(yōu)化代碼庫,但已經(jīng)達(dá)到了這樣的地步:不再為投入的時(shí)間和精力帶來有價(jià)值的結(jié)果。我們對(duì) mysql 調(diào)優(yōu)如何對(duì)流行開源 web 應(yīng)用程序的性能產(chǎn)生積極影響的研究旨在向用戶展示這一事實(shí)。
測(cè)試設(shè)置
用于測(cè)試的 prestashop 版本是 8.1.2,它專門針對(duì) php 8.1 進(jìn)行了優(yōu)化。有關(guān)安裝此版本 prestashop 的詳細(xì)指導(dǎo)可以在官方文檔中找到。
我們使用默認(rèn)安裝的prestashop安裝了演示數(shù)據(jù),導(dǎo)出所有演示產(chǎn)品并多次導(dǎo)入為新產(chǎn)品,然后我們安裝了多種語言用于電子商務(wù)。
我們的測(cè)試持續(xù)時(shí)間是2天。為了應(yīng)對(duì)更長的測(cè)試周期,我們從 blazemeter(最長測(cè)試持續(xù)時(shí)間為 20 分鐘)切換到開源負(fù)載測(cè)試工具 locust。
我們使用:
gcp 計(jì)算引擎實(shí)例 c2-standard-4,配備 debian bullseye 作為操作系統(tǒng),apache 作為 web 服務(wù)器,默認(rèn)配置為 mariadb 10.5,數(shù)據(jù)庫大小為 1gb。
mysql配置
prestashop 調(diào)整配置:
[mysqld] innodb_change_buffering=none innodb_change_buffer_max_size=25 innodb_adaptive_flushing_lwm=25.000000 innodb_max_dirty_pages_pct=70.000000 innodb_autoextend_increment=48 thread_stack=299008 transaction_prealloc_size=8192 thread_cache_size=172 max_connections=172 query_cache_type=1 query_cache_size=134217728 query_cache_limit=33554432 query_cache_min_res_unit=4096 key_buffer_size=8388608 max_heap_table_size=16777216 tmp_table_size=16777216 innodb_buffer_pool_size=3355443200 innodb_log_file_size=25165824 innodb_file_per_table=1 sort_buffer_size=2097152 read_rnd_buffer_size=262144 bulk_insert_buffer_size=8388608 myisam_sort_buffer_size=8388608 innodb_buffer_pool_chunk_size=134217728 join_buffer_size=8388608 table_open_cache=2048 table_definition_cache=512 innodb_flush_log_at_trx_commit=1 innodb_log_buffer_size=16777216 innodb_write_io_threads=4 innodb_read_io_threads=4 innodb_flush_method=O_DIRECT innodb_thread_concurrency=0 optimizer_search_depth=0 innodb_purge_threads=4 thread_handling=one-thread-per-connection thread_pool_size=6
登錄后復(fù)制
測(cè)試結(jié)果
prestashop 的性能評(píng)估顯示優(yōu)化后有顯著的增強(qiáng)。
值得注意的是,響應(yīng)時(shí)間顯著減少,從 610 毫秒減少到 370 毫秒,改善了39%。同樣,網(wǎng)站處理請(qǐng)求的能力激增了 50%,從每秒 8 個(gè)請(qǐng)求增加到 12 個(gè)請(qǐng)求。
cpu 利用率 有所下降,從滿負(fù)荷 100% 降至 90%,負(fù)載下降10%。最令人印象深刻的是,mysql 的查詢處理能力從每秒 5078 次查詢躍升至 7816 次查詢,大幅提升 53%。
我們錄制了截屏視頻,以顯示應(yīng)用推薦的 mysql 配置后對(duì)響應(yīng)時(shí)間的影響。
prestashop 調(diào)整 mysql 配置與默認(rèn)配置
測(cè)試結(jié)果圖表如下:
響應(yīng)時(shí)間(毫秒),prestashop 調(diào)整的 mysql 配置與默認(rèn)值
cpu 利用率 (%),prestashop 調(diào)整的 mysql 配置與默認(rèn)值
每秒查詢數(shù),prestashop 調(diào)整 mysql 配置與默認(rèn)值
社區(qū)貢獻(xiàn)
在設(shè)置測(cè)試環(huán)境時(shí),我們與 multiservicios austral 首席執(zhí)行官 giuseppe pompeo 密切合作。 giuseppe 的公司處于智利數(shù)字服務(wù)的前沿,尤其以其 prestashop 電子商務(wù)方面的專業(yè)知識(shí)而聞名。他們的團(tuán)隊(duì)得到 prestashop 的認(rèn)可和認(rèn)證,六年多以來一直在該領(lǐng)域提供專門和專業(yè)的服務(wù)。
giuseppe 的參與對(duì)于準(zhǔn)備我們的服務(wù)器、啟動(dòng)我們的網(wǎng)站以及向其填充初始數(shù)據(jù)至關(guān)重要。他在云基礎(chǔ)設(shè)施方面的豐富經(jīng)驗(yàn)以及對(duì)優(yōu)化 prestashop 等電子商務(wù)平臺(tái)的熱衷在確保我們的測(cè)試順利進(jìn)行方面發(fā)揮了重要作用。我們非常感謝 giuseppe 為我們的項(xiàng)目帶來的知識(shí)和效率。
結(jié)論
我們使用 prestashop 進(jìn)行的測(cè)試程序顯示,配置數(shù)據(jù)庫服務(wù)器配置后,
響應(yīng)時(shí)間(延遲)
、cpu 利用率和每秒查詢數(shù)有所改善。
響應(yīng)時(shí)間(延遲)
下降了 39%,而cpu 利用率下降了 10%。 每秒查詢數(shù) prestashop 增加了 53%。 網(wǎng)站每秒請(qǐng)求數(shù) +50%。
通過這項(xiàng)研究,我們希望展示 mysql 調(diào)優(yōu)作為提高 prestashop 應(yīng)用程序性能的一種手段的價(jià)值,并鼓勵(lì) prestashop 用戶在優(yōu)化其網(wǎng)站性能時(shí)考慮這種做法。
使用 releem 等工具,可以快速輕松地配置數(shù)據(jù)庫以獲得最佳性能,從而減輕軟件開發(fā)團(tuán)隊(duì)的負(fù)擔(dān)。