Mysql

如何調整 Nginx + MySQL + PHP-FPM 瓶頸以解決伺服器高負載?

  • August 15, 2016

我的伺服器 Ubuntu 14.04.4 LTS 以高負載執行,目前執行一個帶有 Nginx + Wordpress + W3 Total Cache + Memcached 的站點。

我不確定是否mysql會導致工作量問題。

這是和的螢幕htop截圖mytop

我可以從中htop看出記憶體不是這裡的瓶頸。

它表明mysqld並且php-fpm是使用最高資源的程序。

有人能告訴我如何解釋mytop嗎?它看起來正常嗎?

1  [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||93.6%]     Tasks: 361, 71 thr; 12 running
2  [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||95.6%]     Load average: 19.52 22.34 19.45 
3  [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||97.5%]     Uptime: 71 days, 08:54:08
4  [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||96.8%]
Mem[|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||5570/8015MB]
Swp[                                                                         0/0MB]

MySQL on localhost (5.7.13)
load 23.92 23.12 19.55 43/528 10012 up 7+04:05:52 [05:30:09]
Queries: 103.6M   qps:  175 Slow:  0.0  Se/In/Up/De(%):  79/00/00/00 
Sorts:  8693 qps now:  356 Slow qps: 0.0  Threads:  37 (   1/   3) 79/00/00/00 
Key Efficiency: 50.0%  Bps in/out: 28.8k/532.7k   Now in/out: 57.6k/880.7k

還是我應該考慮使用 fastcgi_cache 來避免命中 php-fpm?

更新:

我嘗試重新啟動我的所有服務、Nginx、PHP-FPM 和 MySQL。

我在一個流量相當高的網站上工作,每天瀏覽量為 110 萬次。

重新啟動所有服務後,資源再次快速上升。

在非高峰時段,我的 4 核機器上的負載值最大約為 4.00。

在高峰時段,負載在 20 到甚至 40 之間。

mytop 輸出並沒有告訴我們什麼在使用你的 CPU——或者至少我不明白。我只使用頂部/ htop。

我寫了一篇關於 Nginx、Wordpress 和記憶體的相當大的六部分教程。其中的想法應該可以幫助您優化伺服器。

簡而言之,您應該不惜一切代價避免使用 PHP。靜態或半靜態公共內容的記憶體時間可以從 1 秒(微記憶體)到 1 週,極大地減少了伺服器的負載。這可以將吞吐量提高兩個數量級,並大大減少響應時間。我還使用 CDN,CloudFlare免費層,用於靜態資源記憶體和加速 DNS 查找。

引用自:https://serverfault.com/questions/796444