天天看點

dz論壇mysql 占用cpu_解決寶塔面闆CPU占滿100%,負載100%網站緩慢等問題

dz論壇mysql 占用cpu_解決寶塔面闆CPU占滿100%,負載100%網站緩慢等問題

寶塔伺服器面闆cpu、負載都是100%,一般來說這種問題的可能性很多,有可能是程式性能、伺服器負載能力、PHP或Mysql并發通路、PHP-FPM程序占用、磁盤空間不足、木馬病毒、被植入了挖礦程式等等,我們初步以幾個方面來為大家做一下分析。其實這類問題可以這樣考慮,比如說CPU占用的多,我們可以提高記憶體的使用率、提高磁盤的IO性能等等。我們今天主要從伺服器運作環境出發,來為朋友們分析。

1、mysql篇

初步來說首先考慮使用

top

檢視一下目前的負載情況,使用XSHELL工具連接配接到指令行操作界面,或通過寶塔面闆->檔案 點選

終端

進入指令行操作也可。

dz論壇mysql 占用cpu_解決寶塔面闆CPU占滿100%,負載100%網站緩慢等問題

新版本的端口需要二次驗證伺服器權限,我們在步1處輸入伺服器的SSH連結密碼,然後在步2處勾選記住密碼(記住密碼并不安全,這麼做是為了友善),直接點選步3的确定即可登入到寶塔終端頁面。

在下圖我們直接輸入指令

top

,檢視資源占用清單:

dz論壇mysql 占用cpu_解決寶塔面闆CPU占滿100%,負載100%網站緩慢等問題

我們看到PID2185這個mysql的程序CPU占用比較高,已經達到83%,考慮到記憶體數值占用不多,面闆的主要負載應該發生在mysql的讀寫,占用了大量的CPU資源,使用者的通路先不考慮,首先考慮mysql的性能問題,根據朋友發過來的截圖來判斷了一下。

dz論壇mysql 占用cpu_解決寶塔面闆CPU占滿100%,負載100%網站緩慢等問題

發現記憶體的占用較少 ,看到這種情況,第一直覺可以優化一下mysql的性能,接着找到面闆的軟體管理,打開mysql的設定,在上面幾個章節已經為大家講過關于Mysql的性能調整的内容,可以參考:寶塔面闆之Mysql性能調整 來進行設定。

根據記憶體大小調整優化方案為2-4GB,首先将資料庫全部備份了一下,老司機都懂的,資料安全最重要,不管如何操作都會存在風險,是以一定要備份一下!!!!然後,儲存,再重新開機資料庫。若友善的話建議重新啟動一下伺服器就更直覺了。

設定完成後,我們再看一下負載情況:

dz論壇mysql 占用cpu_解決寶塔面闆CPU占滿100%,負載100%網站緩慢等問題

負載确實降下來了,朋友們若是遇到此類問題,若是mysql占用的情況較為明顯,可以考慮采用此種方案嘗試 !!!!

2、php程序篇

我們知道,問題出現了重在如何分析?考慮到目前PHP的廣泛應用,大多站點在選用伺服器配置時,沒有提前對自己的項目源碼做過壓測,也不知道程式源碼的性能如何,同樣的一條業務指令,有的開發者寫的就考慮的比較多,有的相對就少很多,還有對資料庫的讀寫、磁盤的IO等等一些不确定的因素,布署好程式後,發現很多100%負載的情況。

其實,寶塔已經為我們做了很多工作,我們完全可以做出一些配置來,避免一些高負載的情況出現,比如,我們可以使用更高版本的PHP,也可以通過 寶塔面闆之PHP參數及并發調整 來調整并發性能,來降低PHP程序堵塞。

dz論壇mysql 占用cpu_解決寶塔面闆CPU占滿100%,負載100%網站緩慢等問題
運作模式:動态 | 靜态 php-fpm至關重要的參數:

max_children;靜态方式下開啟的php-fpm程序數量

start_servers; 動态方式下的起始php-fpm程序數量

min_spare_servers;動态方式下的最小php-fpm程序數量

max_spare_servers;動态方式下的最大php-fpm程序數量

那到底是選用動态的好還是靜态的好?

大記憶體的伺服器(比如8G以上)來說,用靜态的max_children實際上

更為妥當

,因為這樣不需要進行

額外的程序數目

控制(這塊提到點了,程序越多占的資源越大),會提高效率。因為頻繁開關php-fpm程序也會有造成更多的資源占用,是以記憶體夠大的情況下開靜态效果會更好。數量也可以根據

總記憶體/30M

得到,比如8GB記憶體可以設定為100,那麼php-fpm耗費的記憶體就能控制在 2G-3G的樣子。(此處參考:傳送門)

是以我們在實際的配置中,需要自己調配,這樣可以大大的降低高負載的情況,此情況隻适用于在使用

top

指令後,由php-fpm占用資源過大,來參考調整。

3、記憶體篇

PHP、Mysql性能、并發我們都調整過了,但負載還是居高不下,怎麼辦?

有辦法啊,我們可以在不增加額外花費的同時,對記憶體進行擴容!

說到這裡,我們不得不說,一個神奇的寶塔插件,那就是Linux工具箱,我們可以調整2個方面,來對記憶體擴充進行調整:

一是 添加swap交換分區

二是 添加記憶體盤

實際上,以上兩種全是建立在磁盤空間的基礎上來做的調整。(Windows下稱為虛拟記憶體)

添加swap我們可以參考前面講過的:寶塔面闆之添加Swap交換分區 這裡就不多說了。

添加記憶體盤如何操作呢?
dz論壇mysql 占用cpu_解決寶塔面闆CPU占滿100%,負載100%網站緩慢等問題

我們可以通過點選寶塔面闆的軟體商店,搜尋:Linux工具箱,找到這個插件,點選操作區域的設定,進入Linux工具箱視窗,在步1點選檔案夾打開, 選擇存放磁盤的位置,步2輸入可以挂載的記憶體盤大小(這個根據你目前的磁盤容量來考量),在步3處點添加,來完成記憶體盤的建立。

通過建立swap交換分區及記憶體盤,我們可以在增強伺服器的穩定性前掉下,擴容記憶體的大小,以便解決一些相對配置較低,容易形成高負載而影響使用的伺服器。

4、磁盤空間篇

可用磁盤空間太小或幾乎占滿的情況下,朋友們遇到過吧! 那麼問題來了,磁盤空間也對高負載産生影響嗎?

答案是絕對的,不信你試試;

展現在以上幾個方面:

為了加快程式運作,大部分PHP程式會寫緩存;

Mysql在不使用諸如:Memcache、Redis、eAccelerator、opcache進行記憶體優化時,會以檔案的形式存儲在磁盤中;

各種日志,如web通路日志、面闆日志、監控日志及各種錯誤日志占用磁盤空間;

更有甚者,日志檔案都能達到幾十G、上百G,好吧,你的磁盤不花錢是不是?

不用多解釋,在使用windows時,你會發現好多軟體都會産生一些臨時性的緩存、日志等檔案,時間長了系統變慢,運作什麼軟體也不流暢,同樣的,伺服器系統一樣會存在這樣的問題,運作不流暢,就會産生資源被侵占。

是以我們在日常維護中,要多運用寶塔或三方已經提供的工具,或使用計劃任務定期清理磁盤無用的檔案,隻有這樣才會少些問題。

5、開發篇

對于有一定開發能力的朋友,可以對源碼進行二開改造,降低php的程序數、Mysql存取資料庫的性能,有好多問題還是産生于此,減少握手次數、對查庫操作減少資源浪費。

本文旨在講解寶塔面闆的使用,過多關于程式開發方面的就不多講了,大家可以在網上多搜尋一下,多了解一下。