国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

mysql內(nèi)存溢出處理

IT那活兒 / 2526人閱讀
mysql內(nèi)存溢出處理
喜歡就關(guān)注我吧,訂閱更多最新消息



 業(yè)務(wù)場景

mysql 

組件版本:

mysql:

5.7.25軟件架構(gòu):

兩主兩從

01
問題描述

 MySQL是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),屬于Oracle旗下產(chǎn)品。MySQL是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,在WEB應(yīng)用方面,MySQL是最好的RDBMS(Relational Database Management System,關(guān)系數(shù)據(jù)庫管理系統(tǒng))應(yīng)用軟件之一,MySQL所使用的SQL語言是用于訪問數(shù)據(jù)庫的最常用標(biāo)準(zhǔn)化語言。MySQL軟件采用了雙授權(quán)政策,分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),一般中小型網(wǎng)站的開發(fā)都選擇MySQL作為網(wǎng)站數(shù)據(jù)庫。

 某業(yè)務(wù)系統(tǒng)采用mysql社區(qū)開源版本架構(gòu)為兩主兩從,排除人為因素故障,mysql常出現(xiàn)的故障是內(nèi)存溢出(OOM全稱"OutOfMemory",即內(nèi)存溢出),內(nèi)存溢出已經(jīng)是軟件開發(fā)歷史上存在了近40年的“老大難”問題。在操作系統(tǒng)上運(yùn)行各種軟件時,軟件所需申請的內(nèi)存遠(yuǎn)遠(yuǎn)超出了物理內(nèi)存所承受的大小,就叫內(nèi)存溢出。由于該業(yè)務(wù)系統(tǒng)采用了主從+VIP架構(gòu),當(dāng)主庫由于內(nèi)存溢出掛掉后,另外一個主庫負(fù)責(zé)業(yè)務(wù),所以業(yè)務(wù)有短暫幾十秒時間的故障期,但對整體業(yè)務(wù)未產(chǎn)生影響。


02
結(jié)構(gòu)及詳細(xì)說明

Mysql高可用大致架構(gòu)圖:

兩個實(shí)例互為主從,另外兩個實(shí)例分別為這兩個主實(shí)例的從庫實(shí)例,兩個主庫實(shí)例之間通過keepalived監(jiān)控實(shí)例以實(shí)現(xiàn)VIP高可用。




03
問題定位

主庫實(shí)列發(fā)生OOM,實(shí)例進(jìn)程由于占用內(nèi)存達(dá)到linux系統(tǒng)的最大閾值,導(dǎo)致linux系統(tǒng)kill了mysql實(shí)例進(jìn)程,可以通過如下方式查看mysql使用了多少內(nèi)存:

查看每個線程占用多少內(nèi)存,然后乘以正在運(yùn)行的線程(也就是排查sleep的)。

SELECT( ( @@read_buffer_size + @@read_rnd_buffer_size + @@sort_buffer_size+ @@join_buffer_size + @@binlog_cache_size + @@thread_stack +@@tmp_table_size + @@bulk_insert_buffer_size + @@max_allowed_packet +@@net_buffer_length ) ) / (1024*1024) AS MEMORY_MB;

showglobal status like %threads%;


查看MySQL全局占用多少內(nèi)存

select(@@innodb_buffer_pool_size+@@innodb_log_buffer_size+@@key_buffer_size)/ 1024 /1024 AS MEMORY_MB;


查看performance_schema占用多少內(nèi)存

SELECTSUBSTRING_INDEX(event_name,/,2) AS code_area,sys.format_bytes(SUM(current_alloc)) AS current_alloc FROMsys.x$memory_global_by_current_bytes GROUP BYSUBSTRING_INDEX(event_name,/,2) ORDER BY SUM(current_alloc) DESC;


查看memory存儲引擎占用多少內(nèi)存

selectsum(max_data_length)/1024/1024 as MEMORY_MB from tables whereengine=memory;

04
解決過程

通過以上方式查看當(dāng)前mysql數(shù)據(jù)庫具體占用多少內(nèi)存,從而找到占用內(nèi)存較多的對象,在根據(jù)對象的具體作用來調(diào)節(jié)數(shù)據(jù)庫配置:

  1. 如線程數(shù)過多,可以調(diào)整業(yè)務(wù)連接為長連接,長連接固定占用內(nèi)存,是業(yè)務(wù)連接重復(fù)使用內(nèi)存。

  2. 如innodbbuffer占用過多而業(yè)務(wù)所跑tps不大,可以通過調(diào)小innodbbuffer,減少內(nèi)存占用

  3. 如以上方式無法整改,可以通過添加物理內(nèi)存方式


由于該業(yè)務(wù)采用了高可用架構(gòu),所以mysql發(fā)生故障時,業(yè)務(wù)未產(chǎn)生影響。


05
總 結(jié)

1、mysql生產(chǎn)為了保證數(shù)據(jù)以及業(yè)務(wù)連續(xù)性,一定要使用高可用架構(gòu)

2、oom內(nèi)存溢出一定要仔細(xì)查看mysql是哪部分占用內(nèi)存較多,再根據(jù)不同部分調(diào)整業(yè)務(wù)生產(chǎn)庫的相關(guān)配置,包括硬件配置及軟件配置。



END


文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/130046.html

相關(guān)文章

  • Java內(nèi)存溢出(OutOfMemoryError)

    摘要:那就只能是處理的數(shù)據(jù)超過了堆區(qū)內(nèi)存上限,按照這個猜測往下分析。主要暴增對象如上圖框出來的地方。符合對象內(nèi)存一篇文中分析的字節(jié)大小。優(yōu)化自己的程序,使其在運(yùn)行過程中占用內(nèi)存盡可能的少。針對異常的具體優(yōu)化措施。 前言 在正式開始講解關(guān)于OutOfMemoryError錯誤之前先來了解下,我在遇到這個異常的背景。 對數(shù)據(jù)充滿敬畏之心 我需要對hive中的數(shù)據(jù)進(jìn)行批量操作處理,對于沒有了解過h...

    calx 評論0 收藏0
  • PHP+MySQL導(dǎo)出大量數(shù)據(jù)(Iterator yield)

    摘要:開發(fā)中經(jīng)常遇到這樣的場景產(chǎn)品汪我要在后臺做一個功能,可以導(dǎo)出自定義時間范圍的訂單信息。結(jié)果,第二天一上班產(chǎn)品汪過來就是拍桌子,我想把去年一整年的訂單都導(dǎo)出來,結(jié)果后臺直接就掛了開發(fā)小哥一查,原來是內(nèi)存溢出了,一年下來的的訂單量足足有條。 開發(fā)中經(jīng)常遇到這樣的場景 產(chǎn)品汪:我要在后臺做一個功能,可以導(dǎo)出自定義時間范圍的訂單信息。開發(fā)小哥二話不說,半天就把功能做完并上線了。結(jié)果,第二天一上...

    codergarden 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<