當前位置:博客首頁>>nginx >> 閱讀正文

LNMP單機高并發(fā)的簡單優(yōu)化

作者: 鄭曉 分類: nginx, PHP, 分享經(jīng)驗 發(fā)布于: 2020-12-04 19:00 瀏覽:3,807 沒有評論


小項目使用單臺機器,2核4G,使用CentOS+Nginx+MySQL+PHP環(huán)境搭建的搶購活動。前臺Vue+Laravel框架提供API及后管,使用Redis防止超售問題。

優(yōu)化前使用默認的lnmp配置,活動開始后基本卡死,php-fpm日志記錄到線程數(shù)量不夠、CPU占用90%以上。慢日志中發(fā)現(xiàn)laravel include過多文件導致磁盤IO過高,網(wǎng)站請求變慢,進而導致nginx日志中過多的499狀態(tài)碼(客戶端主動關(guān)閉),用戶體驗效果很差。

我使用的幾條優(yōu)化方法:

  1. 首先盡量減少搶購過程中的mysql查詢,轉(zhuǎn)移到Redis儲存,開啟Redis持久化,防止宕機后的數(shù)據(jù)丟失。
  2. 優(yōu)化PHP-FPM,啟動多個php-fpm master進程來分擔過多的php請求,比如我啟動了四個php-fpm。Nginx中使用upstream進行負載均衡。
  3. 手動指定Nginx的worker_processes和worker_cpu_affinity,我設(shè)置為雙倍,即worker_processes 4、worker_cpu_affinity 0001 0010 0100 1000。
  4. 啟用opcache解決php磁盤占用過高的問題,opcache緩存php編譯后的字節(jié)碼,直接跳過前期的文件相互引用和編譯解釋過程,效果明顯。

測試優(yōu)化后,并發(fā)能穩(wěn)定在140左右,基本無錯誤,響應很快,體驗提高很多。

? ? ? ?

本文采用知識共享署名-非商業(yè)性使用 3.0 中國大陸許可協(xié)議進行許可,轉(zhuǎn)載時請注明出處及相應鏈接。

本文永久鏈接: http://www.yjfs.org.cn/lnmp-high-performance-optimalize.html

發(fā)表評論

change vcode