<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        MySQLOOM系列一Linux內存分配

        來源:懂視網 責編:小采 時間:2020-11-09 20:46:17
        文檔

        MySQLOOM系列一Linux內存分配

        MySQLOOM系列一Linux內存分配:RDS(網易云關系數據庫服務)上線已經有一段時間,陸續不斷有產品遷入到了RDS中,在線上運維的過程中,也遇到了一些曾經沒有考慮到,或者考慮的不全的東西。后續有時間可以分享給大家。 今天想提到的是線上一個4G的RDS實例,發生了OOM(out of memor
        推薦度:
        導讀MySQLOOM系列一Linux內存分配:RDS(網易云關系數據庫服務)上線已經有一段時間,陸續不斷有產品遷入到了RDS中,在線上運維的過程中,也遇到了一些曾經沒有考慮到,或者考慮的不全的東西。后續有時間可以分享給大家。 今天想提到的是線上一個4G的RDS實例,發生了OOM(out of memor

        RDS(網易云關系數據庫服務)上線已經有一段時間,陸續不斷有產品遷入到了RDS中,在線上運維的過程中,也遇到了一些曾經沒有考慮到,或者考慮的不全的東西。后續有時間可以分享給大家。

        今天想提到的是線上一個4G的RDS實例,發生了OOM(out of memory)的問題,MySQL進程被直接Kill掉了。在解釋這個問題的時候,我們首先需要從Linux系統內存分配策略講起。
            一般寫C語言程序,我們習慣使用malloc動態的申請內存空間(Java由JVM負責內存管理),malloc函數會向操作系統申請一段連續的內存單元,然后返回這段空間的起始地址。如果malloc函數返回為null則表示系統沒有可分配的內存空間。這是我們的一般思維,當然這在某些操作系統中確實也是正確的(Solaris)。
             但是Linux不是這樣的,Linux的內存分配采取的是一種更加積極的分配策略,它假設應用申請了內存空間后并不會立即去使用它,所以允許一定量的超售,當應用真的需要使用它的時候,操作系統可能已經通過回收了其他應用的內存空間而變得有能力去滿足這個應用的需求,簡單的說,就是允許應用申請比實際可分配空間(包括物理內存和Swap)更多的內存,這個特性稱為OverCommit。
              這個特性在Linux操作系統里面也是可配的,可以通過設置/proc/sys/overcommit_memory為不同的值來調整OverCommit策略。
             overcommit_memory可以取3個值:
        0:默認值,由Linux內核通過一些啟發式算法來決定是否超售和超售的大小,一般允許輕微的超售,拒絕一些明顯不可能提供的請求,同時做一些規則限制,比如不同用戶overcommit的大小也不一樣。
        1:允許,不做限制的超售,當然這個也不是無限大,還受到尋址空間的限制,32位系統最大可能只有4G,64位系統大概16T左右。
        2:禁止,禁止超售,系統能夠分配的內存不會超過swap+實際物理內存*overcommit_ratio,該值可以通過/proc/sys/vm/overcommit_ratio設置,默認50%。

            為了驗證Linux的內存分配,我們用個小程序來測試一下:

        #include <stdio.h>
        #include <stdlib.h>
        #define MEGABYTE 1024*1024
        int main(int argc, char *argv[])
        {
         void *myblock = NULL;
         int count = 0;
        
         while (1)
         {
         myblock = (void *) malloc(MEGABYTE);
         if (!myblock) break;
         printf("Currently allocating %d MB\n", ++count);
         }
         
         exit(0);
        }
        
        #include <stdio.h>
        #include <stdlib.h>
        
        #define MEGABYTE 1024*1024
        
        int main(int argc, char *argv[])
        {
         void *myblock = NULL;
         int count = 0;
        
         while(1)
         {
         myblock = (void *) malloc(MEGABYTE);
         if (!myblock) break;
         memset(myblock,1, MEGABYTE);
         printf("Currently allocating %d MB\n",++count);
         }
         exit(0);
         
        }

        前者再通過malloc()申請了內存空間以后,并沒有立即去使用它,而后者相反,每次申請完都立即用1去填充。我們來看看兩個程序運行的結果。

        這是在1G的RAM,400M Swap的虛擬機上運行的結果,前者申請了遠遠超過實際內存的空間,后者并沒有超過實際內存可用空間。這就驗證了前面敘述的Linux的內存分配策略。
        本身這是一個系統的優化,無可厚非。但是我們知道,但凡“超售”都是基于不會有大量程序同時使用資源的假設,這顯然也是有風險的。所以Linux又使用了一種OOM Killer(Out Of Memory killer)的機制,在系統可用內存(包括Swap)即將使用完之前,選擇性的Kill掉一些進程以求釋放一些內存。下一章我們重點討論一下Linux OOM Killer的機制。

        您可能感興趣的文章:

      1. MySQL OOM 系統二 OOM Killer
      2. MySQL OOM 系列三 擺脫MySQL被Kill的厄運
      3. 聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        MySQLOOM系列一Linux內存分配

        MySQLOOM系列一Linux內存分配:RDS(網易云關系數據庫服務)上線已經有一段時間,陸續不斷有產品遷入到了RDS中,在線上運維的過程中,也遇到了一些曾經沒有考慮到,或者考慮的不全的東西。后續有時間可以分享給大家。 今天想提到的是線上一個4G的RDS實例,發生了OOM(out of memor
        推薦度:
        標簽: 內存 linux my
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲日韩精品国产3区| 国产亚洲精AA在线观看SEE| 亚洲视频在线观看视频| 久久免费99精品国产自在现线| 国产免费久久精品久久久| 亚洲熟妇AV一区二区三区浪潮| 国产精品久久免费| 亚洲一级片在线播放| 成年女人毛片免费视频| 亚洲精品国产综合久久久久紧| 免费无码又爽又高潮视频| 色窝窝亚洲av网| 久久精品国产亚洲Aⅴ香蕉 | heyzo亚洲精品日韩| 羞羞的视频在线免费观看| 亚洲国产精品激情在线观看| 免费的黄色网页在线免费观看| 亚洲伦乱亚洲h视频| 国产免费阿v精品视频网址| 久久99亚洲网美利坚合众国| 69堂人成无码免费视频果冻传媒 | 无码人妻一区二区三区免费手机 | 一级特黄aa毛片免费观看| 亚洲熟妇无码久久精品| 成人免费一区二区三区在线观看| 亚洲avav天堂av在线网毛片| 亚洲国产精品无码久久久久久曰| 国产成人无码区免费内射一片色欲| 亚洲第一区香蕉_国产a| 最近中文字幕mv免费高清电影| 337p日本欧洲亚洲大胆人人| 亚洲日韩精品射精日| 久久久久久精品免费看SSS| 亚洲精华国产精华精华液| 中文字幕精品亚洲无线码一区| 最近2022中文字幕免费视频| 亚洲国产欧美国产综合一区| 久久乐国产精品亚洲综合| 免费下载成人电影| 国产激情久久久久影院老熟女免费| 亚洲色成人网一二三区|