<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Linux下php-fpm進(jìn)程過多導(dǎo)致內(nèi)存耗盡問題解決

          共 1218字,需瀏覽 3分鐘

           ·

          2022-02-22 06:18

          當(dāng)數(shù)據(jù)庫服務(wù)經(jīng)常突然掛斷,造成無法訪問時(shí)我們能做什么?本篇主題就是記錄針對(duì)這一現(xiàn)象時(shí)發(fā)現(xiàn)問題,分析問題,最后解決問題的過程。

          發(fā)現(xiàn)問題

          最近,發(fā)現(xiàn)個(gè)人博客的Linux服務(wù)器,數(shù)據(jù)庫服務(wù)經(jīng)常掛掉,導(dǎo)致需要重啟,才能正常訪問,極其惡心,于是決心開始解決問題,解放我的時(shí)間和精力(我可不想經(jīng)常出問題,然后人工重啟,費(fèi)力費(fèi)時(shí))。

          分析問題

          發(fā)現(xiàn)問題以后,首先使用free -m指令查看當(dāng)前服務(wù)器執(zhí)行狀況:


          可以看到我的服務(wù)器內(nèi)存是2G的,但是目前可用內(nèi)存只剩下70M,內(nèi)存使用率高達(dá)92%,很有可能是內(nèi)存使用率過高導(dǎo)致數(shù)據(jù)庫服務(wù)掛斷。

          繼續(xù)看詳細(xì)情況,使用top指令:


          然后再看指令輸出結(jié)果中詳細(xì)列出的進(jìn)程情況,重點(diǎn)關(guān)注第10列內(nèi)存使用占比:



          發(fā)現(xiàn)CPU使用率不算高,也排除了CPU的問題,另外可以看到數(shù)據(jù)庫服務(wù)占用15.2%的內(nèi)存,內(nèi)存使用過高時(shí)將會(huì)擠掉數(shù)據(jù)庫進(jìn)程(占用內(nèi)存最高的進(jìn)程),導(dǎo)致服務(wù)掛斷,所以我們需要查看詳細(xì)內(nèi)存使用情況,是哪些進(jìn)程耗費(fèi)了這么多的內(nèi)存呢?

          使用指令:

          ps?auxw|head?-1;ps?auxw|sort?-rn?-k4|head?-40

          查看消耗內(nèi)存最多的前40個(gè)進(jìn)程:


          查看第四列內(nèi)存使用占比,發(fā)現(xiàn)除了mysql數(shù)據(jù)庫服務(wù)之外,php-fpm服務(wù)池開啟了太多子進(jìn)程,占用超過大半內(nèi)存,問題找到了,我們開始解決問題:設(shè)置控制php-fpm進(jìn)程池進(jìn)程數(shù)量。

          解決問題

          通過各種搜索手段,發(fā)現(xiàn)可以通過配置pm.max_children屬性,控制php-fpm子進(jìn)程數(shù)量,首先,打開php-fpm配置文件,執(zhí)行指令:

          vi?/etc/php-fpm.d/www.conf

          找到pm.max_children字段,發(fā)現(xiàn)其值過大:

          如圖,pm.max_children值為50,每一個(gè)進(jìn)程占用1%-2.5%的內(nèi)存,加起來就耗費(fèi)大半內(nèi)存了,所以我們需要將其值調(diào)小,博主這里將其設(shè)置為25,同時(shí),檢查以下兩個(gè)屬性:

          • pm.max_spare_servers: 該值表示保證空閑進(jìn)程數(shù)最大值,如果空閑進(jìn)程大于此值,此進(jìn)行清理

          • pm.min_spare_servers: 保證空閑進(jìn)程數(shù)最小值,如果空閑進(jìn)程小于此值,則創(chuàng)建新的子進(jìn)程;

          這兩個(gè)值均不能不能大于pm.max_children值,通常設(shè)置pm.max_spare_servers值為pm.max_children值的60%-80%。

          最后,重啟php-fpm

          systemctl?restart?php-fpm

          再次查看內(nèi)存使用情況, 使用內(nèi)存降低很多:

          之后經(jīng)過多次觀察內(nèi)存使用情況,發(fā)現(xiàn)此次改進(jìn)后,服務(wù)器內(nèi)存資源消耗得到很大緩解。

          (掃描二維碼,關(guān)注我的視頻號(hào))

          瀏覽 53
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  竹菊视频一区二区三区 | 草久大香蕉啪啪91视频 | 日本爱爱一区二区视频 | 国产高清日韩无码 | 亚洲色综合久久五月 |