解決 MySQL 突然佔用全部內存的問題

前段時間落格從虛擬主機遷移到了獨立的vps上,這下所有的維護內容都得我自己動手了。為了性能,另外既然能自己配環境了,自然不會用舊的配置。

我用了 Ubuntu Server 16.04 + PHP 7.0 + Nginx的 + MySQL 5.7 總之,踩了不少的坑。

現在,來記錄一下

關於 MySQL 為什麼會突然占滿記憶體

一開始我以為是vps遭到了攻擊,可是只查看網卡流量就不是這麼回事。第一次死機,我以為是配置錯誤,添加了一大堆緩存,減小了記憶體配置等等。但好景不長,又死了。

但之前為什麼一直沒有死機,這是一個迷。

在修復了表、優化了 MySQL 配置等一系列無用功之後,終於定位到了問題所在:

Performance Schema

這是在 5.6 版本中開始預設開啟的一項功能,它會在 MySQL 啟動之後悄悄佔用 400M 左右的記憶體來加速 MySQL 的運行——對於動輒近百的企業級伺服器來說,可能不值一提,但是對於咱們這種屌絲小 vps (我這個 1GB 獨立記憶體算是不錯的了)來說,可就要頂了天了!

所以,這大概就是為什麼我的伺服器最近連續死機兩次了。

要關閉 Performance Schema ,在你的 MySQL 設定檔的 [mysqld] 欄位添加一句 performance_schema = off

這樣,我的資料庫就穩定在 300M 記憶體左右了。

參考

Starting MySQL On Low Memory Virtual Machines

MySQL 記憶體佔用過高分析

本文由 落格博客 原創撰寫:落格博客 » 解決 MySQL 突然佔用全部內存的問題

轉載請保留出處和原文鏈接:https://www.logcg.com/archives/1757.html

通過 落格博客

如非聲明,本人所著文章均為原創手打,轉載請註明本頁面鏈接和我的名字。

3 評論

發表評論

您的電子郵件地址不會被公開. 必填字段標 *