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