Mysql
如何調整 Nginx + MySQL + PHP-FPM 瓶頸以解決伺服器高負載?
我的伺服器 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 查找。