ecs雲服務器 mysql經常自動停止掛掉重啓問題分析

我的ecs服務器爲1g內存的配置,在部署了nginx,mysql,redis,node服務後跑起項目來,(mysql使用默認配置),每過幾天便發現了經常會出現數據庫自動停止掛掉,然後幾分鐘後重啓的現象,與此同時ecs無法登陸,當然,網站也是無法訪問了。

後來聯繫了ecs的工單支持,他們查看了系統日誌後說是內存不足,給出了增加虛擬內存的方案。

這裏是 free -m 的查看信息

free -m
            total        used        free      shared  buff/cache   available
Mem:            992         504          76           0         411         322
Swap:          3023         133        2890

這裏是我嘗試的增加虛擬內存,可以很明顯的看到swap由0變成 3023,但實際應用中發現效果並不顯著。
如果想要刪除虛擬內存,則使用這裏

後來通過觀察內存的變化,發現以下:

            total        used        free      shared  buff/cache   available
Mem:            992         504          76           0         411         322
Swap:          3023         133        2890

            total        used        free      shared  buff/cache   available
Mem:            992         533         303           0         155         300
Swap:          3023         133        2890

比較發現,是由於buff/cache的佔比過高,導致內存Mem的free較低,使用以下方法手動清除buff/cache

    echo 1 > /proc/sys/vm/drop_caches:表示清除pagecache。
    echo 2 > /proc/sys/vm/drop_caches:表示清除回收slab分配器中的對象(包括目錄項緩存和inode緩存)。slab分配器是內核中管理內存的一種機制,其中很多緩存數據實現都是用的pagecache。
    echo 3 > /proc/sys/vm/drop_caches:表示清除pagecache和slab分配器中的緩存對象。

手動清除buff/cache的方法取自這裏

明朝敗家子

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章