91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL案例-內存使用率無限增長

發布時間:2020-08-07 20:11:49 來源:ITPUB博客 閱讀:371 作者:wangwenan6 欄目:MySQL數據庫
拖了好久了, 抽空補上  _(:з」∠)_
-------------------------------------------------------------------------------------------------正文---------------------------------------------------------------------------------------------------------------

背景: 收到內存報警的信息以后, 從監控中發現MySQL服務器的內存使用率在不斷的增長;
附圖:
MySQL案例-內存使用率無限增長

雖然進行了重啟, 但是內存占用率依然會不停的增長, 大約在半個月左右的時間內又把內存消耗完畢;

場景: 未搭建場景, 數據庫版本 5.7.12

分析: 
PS: 時間久遠, 截圖僅做分析/示例所用, 不一定是當時候出問題時的數據

嘗試方向1:
首先考慮的是buffer相關的參數是否設置有誤, 畢竟當初crash的時候曾經出現過類似的問題(http://blog.itpub.net/29510932/viewspace-2123096/)
結果: 參數設置都沒什么明顯的問題;

嘗試方向2:
既然設置沒什么問題, 那就看一下內存的占用情況吧~
使用pmap -d  看一下進程的內存情況; 部分信息截圖如下
MySQL案例-內存使用率無限增長

anon代表進程主動申請的內存, 當時對有問題的機器進行統計時, 發現主動申請的內存占了進程內存的95%(當然的..因為buffer都在這里面)
考慮到innodb_buffer_pool的大小只有總內存的50%, 多出來的這些"已申請"的內存實在是有點太多了, 是不是有什么線程申請了大量的內存沒有釋放?

嘗試方向2--檢查線程的內存使用:
MySQL5.7中對ps(performance_schema)進行了拓展, 能統計更多的數據了, 這其中就包括了有關mem的信息;
由于默認是關閉的, 所以現在要臨時打開這些統計數據;

點擊(此處)折疊或打開

  1. update performance_schema.setup_instruments set enabled = 'yes' where name like 'memory%'
執行上述語句之后, 在ps里面就能在mem相關的表里面看到相關的統計信息了; 如下圖:
MySQL案例-內存使用率無限增長

其中CURRENT_NUMBER_OF_BYTES_USED可以近似的當成目前占用的內存總數;
PS: 由于這個統計信息并不會區分共享內存, 所以有可能會出現占用內存為負數, 或者各個項的總和大于實際占用內存總數;

由于是懷疑線程, 所以用CURRENT_NUMBER_OF_BYTES_USED倒序, 查詢Thread相關的表; 結果類似下圖:
MySQL案例-內存使用率無限增長

當時有問題的實例中, 查詢結果結合ps.thread表數據,顯示thread/sql/slave_sql和thread/sql/one_connection(monitor用戶)的內存占用非常高~

嘗試方向2--分析線程:
thread/sql/slave_sql是同步中的SQL線程, 負責復現主庫binlog中的事務, 這個線程占用大量內存卻不進行釋放的現象, 第一反應不是我們自己的問題;
在mysql bug上面找了一圈,發現以前有人提交了類似的bug
(https://bugs.mysql.com/bug.php?id=71197), 狀態為close;
官方給出的解決方案是關閉并行復制, 并且把
rpl相關的信息存在file里面, 而不是table;
MySQL案例-內存使用率無限增長

PS: Nice! 那5.7弄個并行復制不是坑自己么......  _(:з」∠)_

thread/sql/one_connection(monitor用戶)是由用戶創建的, 可以發現是monitor用戶保持的連接, 主要用于自維護的監控插件獲取信息的;
這個至少是能想辦法解決的, 那么看一下monitor線程的詳細信息:
MySQL案例-內存使用率無限增長
查看以后發現memory/sql/String::value占用的內存數最多;
從字面意思理解, 似乎是執行的SQL有點問題, 保存了大量的結果沒有釋放?

聯系了插件的編寫人員, 找到插件的代碼, 仔細看了一圈, 發現代碼在使用cursor執行SQL以后, 沒有close......

對代碼進行fix及推送以后, 內存使用率的增長速度大幅度降低了;

處理結果:
把這個沒有close的經典問題掛到了內部的文檔里面作為反例.......
然后由于一些原因, SQL線程無法釋放已占用內存的問題無法解決, 好在增長的速度并不快, 還在可接受的范圍之內, 暫時做好定期維護(重啟)的準備;
PS: 到目前為止, 出問題的個別實例都沒有再增長到非常高的地步, 目測需要兩個多月才可能會維護(重啟)一次;
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

浮山县| 九江县| 闸北区| 格尔木市| 安西县| 余庆县| 肥城市| 沙湾县| 和林格尔县| 迭部县| 怀来县| 威海市| 竹山县| 上饶市| 会东县| 南溪县| 镇原县| 彭山县| 富顺县| 德昌县| 田阳县| 东阿县| 正阳县| 澄迈县| 武山县| 郧西县| 繁昌县| 额敏县| 郁南县| 扎赉特旗| 横峰县| 乌兰县| 清流县| 东城区| 英德市| 密云县| 通州市| 延津县| 自贡市| 江北区| 聂荣县|