一朋友找我說,他們乙個專案的伺服器記憶體佔用率太高了,讓我幫忙看下怎麼回事。我正好不是太忙就幫他看了下,並記錄如下。
1 檢視伺服器狀態
他的伺服器是阿里雲的ecs,系統是 centos linux release 7.5.1804 (core)
使用top命令看了下系統的狀態
在這裡插入描述
系統的整體負載和cpu並不高,但是記憶體使用比較高(總8g使用了7.2g)。
使用m按記憶體佔用率排序
在這裡插入描述
2 檢視消耗記憶體最多的前40個程序
ps auxw|head -1;ps auxw|sort -rn -k4|head -40
在這裡插入描述
通過上圖可以發現有很多php-fpm的程序,使用命令ps -ef |grep php-fpm:\ pool\ www|wc -l 檢視這中程序的個數有159個
在這裡插入描述
每個程序大概占用了50m,看來記憶體高的問題應該在於php-fpm池的子程序數過多的問題了。
3 解決辦法
通過各種搜尋,發現可以通過配置 pm.max_children 屬性,控制php-fpm子程序數量,首先,開啟php-fpm配置檔案,執行指令:
vi /opt/php/php7.2/etc/php-fpm.d/www.conf
找到 pm.max_children欄位將其修改為100(原來是300),同事將pm.start_servers 修改為30 (原來是100)。
然後重啟php-fpm systemctl restart php-fpm
再次檢視記憶體使用情況,發現記憶體使用降低了很多
在這裡插入描述
同時使用命令檢視php的程序數降低了很多
在這裡插入描述
由於不是太了解php,解決方法非專業的,都是從網搜的,可能不是最佳方案。
Linux中Cache記憶體占用過高解決辦法
在linux系統中,我們經常用free命令來檢視系統記憶體的使用狀態。在乙個rhel6的系統上,free命令的顯示內容大概是這樣乙個狀態 這裡的預設顯示單位是kb,我的伺服器是128g記憶體,所以數字顯得比較大。這個命令幾乎是每乙個使用過linux的人必會的命令,但越是這樣的命令,似乎真正明白的人越...
Linux中Cache記憶體占用過高解決辦法
在linux系統中,我們經常用free命令來檢視系統記憶體的使用狀態。在乙個rhel6的系統上,free命令的顯示內容大概是這樣乙個狀態 這裡的預設顯示單位是kb,我的伺服器是128g記憶體,所以數字顯得比較大。這個命令幾乎是每乙個使用過linux的人必會的命令,但越是這樣的命令,似乎真正明白的人越...
正確理解Linux記憶體占用過高的問題
幾個關於顯看記憶體的命令 top 之後可以按大寫m 按記憶體占用排序 p 按cpu占用排序 free m s2 每隔2秒按兆位元組顯示記憶體使用情況 最近有個月經問題,老有人問為何開機後,還沒有其他服務,mem就被用完了?是不是記憶體洩露?是否要重啟服務?只能說不要看現象,要看本質才能找到問題的根源...