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