日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
php進(jìn)程太多怎么辦

本文操作環(huán)境:linux5.9.8系統(tǒng)、php5.5版、DELL G3電腦

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信小程序定制開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了鹽津免費(fèi)建站歡迎大家使用!

php 進(jìn)程太多怎么辦?

linux服務(wù)器php-fpm進(jìn)程數(shù)過(guò)多導(dǎo)致內(nèi)存占滿處理:

早上到單位 發(fā)現(xiàn)服務(wù)器 mysql 服務(wù)器停了 然后起來(lái)了

查詢?nèi)罩?顯示 內(nèi)存滿了 把mysql服務(wù)給殺了 linux 服務(wù)器如果 內(nèi)存滿了 會(huì)自動(dòng)清理進(jìn)程 防止服務(wù)器掛掉 選擇的話 誰(shuí)占的的內(nèi)存大 就先殺誰(shuí) 我的服務(wù)器里面 mysql服務(wù)占的內(nèi)存是最大的 所以就把mysql就給殺了

然后 重啟mysql 查詢內(nèi)存

在這說(shuō)一下 怎么看linux的內(nèi)存

舉個(gè)例子

如下顯示free是顯示的當(dāng)前內(nèi)存的使用,-m的意思是M字節(jié)來(lái)顯示內(nèi)容.我們來(lái)一起看看.

$ free -m
total  used  free  shared  buffers  cached
Mem:  1002M  769M 232M  0M  62M  421M
-/+ buffers/cache:  286M  715M
Swap:  1153M  0M  1153M
---------------------------
真實(shí)內(nèi)存占用 = used-buffers-cached = 286M
-----------------

第一部分Mem行:

total 內(nèi)存總數(shù): 1002M
used 已經(jīng)使用的內(nèi)存數(shù): 769M
free 空閑的內(nèi)存數(shù): 232M
shared 當(dāng)前已經(jīng)廢棄不用,總是0
buffers Buffer 緩存內(nèi)存數(shù): 62M
cached Page 緩存內(nèi)存數(shù):421M

關(guān)系:total(1002M) = used(769M) + free(232M)

第二部分(-/+ buffers/cache):

(-buffers/cache) used內(nèi)存數(shù):286M (指的第一部分Mem行中的used - buffers - cached)
(+buffers/cache) free內(nèi)存數(shù): 715M (指的第一部分Mem行中的free + buffers + cached)

可見(jiàn)-buffers/cache反映的是被程序?qū)崒?shí)在在吃掉的內(nèi)存,而+buffers/cache反映的是可以挪用的內(nèi)存總數(shù)。

第三部分是指交換分區(qū), 我想不講大家都明白.

我想大家看了上面,還是很暈.第一部分(Mem)與第二部分(-/+ buffers/cache)的結(jié)果中有關(guān)used和free為什么這么奇怪.

其實(shí)我們可以從二個(gè)方面來(lái)解釋.

對(duì)操作系統(tǒng)來(lái)講是Mem的參數(shù).buffers/cached 都是屬于被使用,所以它認(rèn)為free只有232.

對(duì)應(yīng)用程序來(lái)講是(-/+ buffers/cach).buffers/cached 是等同可用的,因?yàn)閎uffer/cached是為了提高程序執(zhí)行的性能,當(dāng)程序使用內(nèi)存時(shí),buffer/cached會(huì)很快地被使用。

所以,以應(yīng)用來(lái)看看,以(-/+ buffers/cache)的free和used為主.所以我們看這個(gè)就好了.另外告訴大家一些常識(shí).Linux為了提高磁盤和內(nèi)存存取效率, Linux做了很多精心的設(shè)計(jì), 除了對(duì)dentry進(jìn)行緩存(用于VFS,加速文件路 徑名到inode的轉(zhuǎn)換), 還采取了兩種主要Cache方式:Buffer Cache和Page Cache。前者針對(duì)磁盤塊的讀寫,后者針對(duì)文件inode的讀寫。這些Cache能有效縮短了 I/O系統(tǒng)調(diào)用(比如read,write,getdents)的時(shí)間。

記住內(nèi)存是拿來(lái)用的,不是拿來(lái)看的.不象windows, 無(wú)論你的真實(shí)物理內(nèi)存有多少,他都要拿硬盤交換文件來(lái)讀.這也就是windows為什么常常提示虛擬空間不足的原因.你們想想,多無(wú)聊,在內(nèi)存還有大部分的時(shí)候,拿出一部分硬盤空間來(lái)充當(dāng)內(nèi)存.硬盤怎么會(huì)快過(guò)內(nèi)存.所以我們看linux,只要不用swap的交換空間,就不用擔(dān)心自己的內(nèi)存太少.如果常常 swap用很多,可能你就要考慮加物理內(nèi)存了.這也是linux看內(nèi)存是否夠用的標(biāo)準(zhǔn)哦.

--------------------------------------------------------------------------------------------------------------------------

接來(lái)下

發(fā)現(xiàn)服務(wù)器的內(nèi)存就剩1.9G了 再用top命令 查看一下

第一行top分別為:當(dāng)前時(shí)間;系統(tǒng)運(yùn)行天數(shù);使用者個(gè)數(shù);系統(tǒng)負(fù)載的平均值,后面的三個(gè)值分別為1分鐘前、5分鐘前、15分鐘前進(jìn)程的平均數(shù),這個(gè)數(shù)值超過(guò) CPU 數(shù)目時(shí),說(shuō)明負(fù)載過(guò)高

第二行Tasks分別為:進(jìn)程總數(shù);運(yùn)行進(jìn)程數(shù);睡眠進(jìn)程數(shù);被停止的進(jìn)程數(shù);被復(fù)原的進(jìn)程數(shù)

第三行CPU(s)分別為:

us:user 用戶空間占用cpu的百分比
sy:system 內(nèi)核空間占用cpu的百分比
ni:niced 改變過(guò)優(yōu)先級(jí)的進(jìn)程占用cpu的百分比
空閑cpu百分比
wa:IO wait IO等待占用cpu的百分比
hi:Hardware IRQ 硬中斷 占用cpu的百分比
si:software 軟中斷 占用cpu的百分比
st:被hypervisor偷去的時(shí)間

第四行Mem分別為:總內(nèi)存;已用內(nèi)存;空閑內(nèi)存;緩沖使用中內(nèi)存

第五行(Swap):類似第四行,但反映著交換分區(qū)(Swap)的使用情況。交換分區(qū)(Swap)被頻繁使用,可以看作物理內(nèi)存不足而造成的

top 輸出界面的頂端,也顯示了系統(tǒng)整體的內(nèi)存使用情況,這些數(shù)據(jù)跟 free 類似,我就不再重復(fù)解釋。我們接著看下面的內(nèi)容,跟內(nèi)存相關(guān)的幾列數(shù)據(jù),比如 VIRT、RES、SHR 以及 %MEM 等。

這些數(shù)據(jù),包含了進(jìn)程最重要的幾個(gè)內(nèi)存使用情況,我們挨個(gè)來(lái)看。

  • VIRT 是進(jìn)程虛擬內(nèi)存的大小,只要是進(jìn)程申請(qǐng)過(guò)的內(nèi)存,即便還沒(méi)有真正分配物理內(nèi)存,也會(huì)計(jì)算在內(nèi)。
  • RES 是常駐內(nèi)存的大小,也就是進(jìn)程實(shí)際使用的物理內(nèi)存大小,但不包括 Swap 和共享內(nèi)存。
  • SHR 是共享內(nèi)存的大小,比如與其他進(jìn)程共同使用的共享內(nèi)存、加載的動(dòng)態(tài)鏈接庫(kù)以及程序的代碼段等。
  • %MEM 是進(jìn)程使用物理內(nèi)存占系統(tǒng)總內(nèi)存的百分比。

除了要認(rèn)識(shí)這些基本信息,在查看 top 輸出時(shí),你還要注意兩點(diǎn)。

第一,虛擬內(nèi)存通常并不會(huì)全部分配物理內(nèi)存。從上面的輸出,你可以發(fā)現(xiàn)每個(gè)進(jìn)程的虛擬內(nèi)存都比常駐內(nèi)存大得多。

第二,共享內(nèi)存 SHR 并不一定是共享的,比方說(shuō),程序的代碼段、非共享的動(dòng)態(tài)鏈接庫(kù),也都算在 SHR 里。當(dāng)然,SHR 也包括了進(jìn)程間真正共享的內(nèi)存。所以在計(jì)算多個(gè)進(jìn)程的內(nèi)存使用時(shí),不要把所有進(jìn)程的 SHR 直接相加得出結(jié)果。

只是這樣看 還是不行 感覺(jué)內(nèi)存 不應(yīng)該 占用很多 然后 使用命令 查看 當(dāng)前系統(tǒng)有多少進(jìn)程

ps -ef  | wc -l

然后使用命令查看占用內(nèi)存最大的500個(gè)進(jìn)程:

ps -aux | sort -k4nr | head -n 500

截取部分 PHP的進(jìn)程 占到了200個(gè) 每個(gè)都100多兆

解釋一下含義

USER: 行程擁有者
PID: pid
%CPU: 占用的 CPU 使用率
%MEM: 占用的記憶體使用率
VSZ: 占用的虛擬記憶體大小
RSS: 占用的記憶體大小
TTY: 終端的次要裝置號(hào)碼 (minor device number of tty)
STAT: 該行程的狀態(tài),linux的進(jìn)程有5種狀態(tài):
D 無(wú)法中斷的休眠狀態(tài)(通常 IO 的進(jìn)程);
R 正在運(yùn)行可中在隊(duì)列中可過(guò)行的;
S 處于休眠狀態(tài);
T 停止或被追蹤;
W 進(jìn)入內(nèi)存交換  (從內(nèi)核2.6開(kāi)始無(wú)效);
X 死掉的進(jìn)程   (基本很少見(jiàn));
Z 僵尸進(jìn)程;
< 優(yōu)先級(jí)高的進(jìn)程
N 優(yōu)先級(jí)較低的進(jìn)程
L 有些頁(yè)被鎖進(jìn)內(nèi)存;
s 進(jìn)程的領(lǐng)導(dǎo)者(在它之下有子進(jìn)程);
l 多進(jìn)程的(使用 CLONE_THREAD, 類似 NPTL pthreads);
+ 位于后臺(tái)的進(jìn)程組;
注: 其它狀態(tài)還包括W(無(wú)駐留頁(yè)), <(高優(yōu)先級(jí)進(jìn)程), N(低優(yōu)先級(jí)進(jìn)程), L(內(nèi)存鎖頁(yè)).
START: 行程開(kāi)始時(shí)間
TIME: 執(zhí)行的時(shí)間
COMMAND:所執(zhí)行的指令

查詢PHP-fpm 總進(jìn)程數(shù)

pstree|grep php-fpm

然后 查詢 php-fpm 進(jìn)程

ps -ef|grep php-fpm

發(fā)現(xiàn)PHP起了四個(gè)主進(jìn)程 這里截取了三個(gè)

然后看的PHP 的配置文件

發(fā)現(xiàn)配置的 是 靜態(tài) 配置的50個(gè)進(jìn)程 四個(gè)主進(jìn)程 每個(gè)配50個(gè)子進(jìn)程 就200多個(gè)進(jìn)程 進(jìn)程太多了 平時(shí)的話 一般就六七個(gè)進(jìn)程在處理 修改 進(jìn)程數(shù)量 把50 改成10 這個(gè)進(jìn)程數(shù)量 根據(jù)自己服務(wù)器的內(nèi)存大小 來(lái)設(shè)置

查看當(dāng)前php-fpm進(jìn)程的內(nèi)存占用情況及啟動(dòng)時(shí)間,命令如下:

ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid'|grep www|sort -nrk5

查看當(dāng)前php-fpm進(jìn)程平均占用內(nèi)存情況,一般來(lái)說(shuō)一個(gè)php-fpm進(jìn)程占用的內(nèi)存為30-40MB,命令如下:

ps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'

然后我重啟了PHP 指定配置文件

步驟

先 查找 然后 殺死

ps aux |grep php
kill 21605 (進(jìn)程pid)

檢測(cè)

啟動(dòng)

./php-fpm -y /usr/local/php/etc/php-fpm.conf

重啟完 內(nèi)存就降下來(lái)了

然后就事查找問(wèn)題 猜測(cè)是內(nèi)存泄露 但是不確定是哪里 對(duì)一些感覺(jué)有問(wèn)題的地方 加上了unset()

然后檢測(cè) 發(fā)現(xiàn) 內(nèi)存一直都很平穩(wěn)

如果內(nèi)存還是一直增加 可以限制內(nèi)存大小

設(shè)置方法:編輯php-fpm.conf配置文件

php_admin_value[memory_limit] = 128M(我服務(wù)器上的配置文件在/etc/php5/fpm/pool.d/www.conf 這個(gè)文件是被包含在php-fpm.conf里的) 后邊的數(shù)字可以隨便更改:32M,64M,128M,256M,512M,這個(gè)設(shè)置可根據(jù)你的服務(wù)器內(nèi)存大小和你的需求來(lái)寫,修改后要加載一下php-fpm服務(wù)。

這個(gè)時(shí)候 程序那個(gè)步驟出問(wèn)題了 就說(shuō)明哪里有內(nèi)存泄露 但是也不是絕對(duì)的 這里還要了解一下 PHP的垃圾回收機(jī)制

如果你在一個(gè)進(jìn)程里面 應(yīng)該也是 累加的 也不是很好判斷 就要根據(jù)程序 對(duì)不用的變量進(jìn)程銷毀 或者 限制 PHP的進(jìn)程數(shù)量

注: 普通用戶數(shù)據(jù)1000條 存在數(shù)組里面 大約占2246.2734375kb

普通用戶數(shù)據(jù)2000條 存在數(shù)組里面 大約占4472.8671875kb


當(dāng)前名稱:php進(jìn)程太多怎么辦
地址分享:http://www.dlmjj.cn/article/dpdpcgp.html