成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

故障排除指南:MySQL運(yùn)行內(nèi)存不足怎么辦?

故障排除對(duì)于所有人來(lái)說(shuō)都不會(huì)是一件有趣的事情,尤其是在沒(méi)有崩潰報(bào)告的情況下。如果MySQL因內(nèi)存不足而崩潰時(shí)應(yīng)該怎么辦?Peter Zaitsev曾在2012年寫過(guò)的一篇博客中給出了許多有用的提示,而利用新版本的MySQL(5.7及以上)和performance_schema,我們可以更輕松地解決MySQL內(nèi)存分配問(wèn)題。

創(chuàng)新互聯(lián)公司是一家網(wǎng)站設(shè)計(jì)公司,集創(chuàng)意、互聯(lián)網(wǎng)應(yīng)用、軟件技術(shù)為一體的創(chuàng)意網(wǎng)站建設(shè)服務(wù)商,主營(yíng)產(chǎn)品:成都響應(yīng)式網(wǎng)站建設(shè)、成都品牌網(wǎng)站建設(shè)成都營(yíng)銷網(wǎng)站建設(shè)。我們專注企業(yè)品牌在網(wǎng)站中的整體樹立,網(wǎng)絡(luò)互動(dòng)的體驗(yàn),以及在手機(jī)等移動(dòng)端的優(yōu)質(zhì)呈現(xiàn)。成都做網(wǎng)站、網(wǎng)站制作、移動(dòng)互聯(lián)產(chǎn)品、網(wǎng)絡(luò)運(yùn)營(yíng)、VI設(shè)計(jì)、云產(chǎn)品.運(yùn)維為核心業(yè)務(wù)。為用戶提供一站式解決方案,我們深知市場(chǎng)的競(jìng)爭(zhēng)激烈,認(rèn)真對(duì)待每位客戶,為客戶提供賞析悅目的作品,網(wǎng)站的價(jià)值服務(wù)。

故障排除指南:MySQL運(yùn)行內(nèi)存不足怎么辦?

本文將向大家介紹如何解決MySQL內(nèi)存分配問(wèn)題。

首先,我們先來(lái)看一下在哪些情況下MySQL會(huì)因內(nèi)存不足而崩潰:

  • 當(dāng)MySQL嘗試分配比可用內(nèi)存更多的內(nèi)存時(shí),例如沒(méi)有正確設(shè)置innodb_buffer_pool_size;

  • 服務(wù)器上還有一些其他進(jìn)程可以分配RAM,比如它應(yīng)用程序(java,python,php)、Web服務(wù)器,或者是備份(即mysqldump)。

  • MySQL中的內(nèi)存泄漏。這是最糟糕的情況,我們需要進(jìn)行故障排除。

以上,就是常見(jiàn)的三種MySQL因內(nèi)存不足而崩潰的情況,其中前兩種情況比較好解決,而第三種情況就比較棘手。

從哪里開始排除MySQL內(nèi)存泄漏問(wèn)題

假設(shè)這是一個(gè)Linux服務(wù)器,首先我們要 檢查L(zhǎng)inux操作系統(tǒng)和配置 ,

  1. 檢查mysql錯(cuò)誤日志和Linux日志文件(即/ var / log / messages或/ var / log / syslog)來(lái)識(shí)別崩潰。你可能會(huì)看到OOM Killer殺死MySQL的條目,可以使用“dmesg”來(lái)顯示相關(guān)的詳細(xì)信息。

  2. 檢查可用的RAM: free -g    cat / proc / meminfo

  3. 檢查哪些應(yīng)用程序正在使用RAM: “top”或“htop”

  4. 檢查mysql配置: /etc/my.cnf 或general /etc/my* (including /etc/mysql/*等文件),MySQL可能正在運(yùn)行不同的my.cnf(run ps  ax | grep mysql  )

  5. 運(yùn)行 vmstat 5 5  以查看系統(tǒng)是否正在通過(guò)虛擬內(nèi)存進(jìn)行讀/寫以及是否正在進(jìn)行交換

  6. 對(duì)于非生產(chǎn)環(huán)境,我們可以使用其他工具(如Valgrind,gdb等)來(lái)檢查MySQL的使用情況.

檢查MySQL內(nèi)部

我們也可以通過(guò)檢查MySQL內(nèi)部來(lái)發(fā)現(xiàn)潛在的MySQL內(nèi)存泄露。MySQL在很多地方都會(huì)有內(nèi)存分配,尤其是在以下情況下:

現(xiàn)在我們可以檢查MySQL內(nèi)部的東西來(lái)尋找潛在的MySQL內(nèi)存泄漏。

MySQL在很多地方分配內(nèi)存。特別:

  1. Table cache

  2. Performance_schema(運(yùn)行: show engine performance_schema status ,并查看最后一行)。

  3. InnoDB(運(yùn)行 show engine innodb status   并檢查緩沖池部分,為buffer_pool和相關(guān)緩存分配的內(nèi)存)

  4. RAM中的臨時(shí)表(通過(guò)運(yùn)行以下語(yǔ)句查找所有內(nèi)存表: select * from information_schema .tables where engine ='MEMORY'  )

  5. Prepared statements。

不過(guò),從MySQL 5.7版本開始,我們就可以在performance_schema中查看內(nèi)存分配。那么,如何使用呢?

首先,我們需要啟用收集內(nèi)存指標(biāo)。Run:

UPDATE setup_instruments SET ENABLED =   'YES'
WHERE NAME LIKE 'memory/%';

sys schema 運(yùn)行 report :

select event_name, current_alloc, high_alloc
from sys.memory_global_by_current_bytes
where current_count > 0;

通常,分配內(nèi)存時(shí)會(huì)提供代碼,所以在某些情況下搜索某些錯(cuò)誤時(shí),我們可能需要檢查 MySQL 源代碼。例如,對(duì)于在觸發(fā)器中過(guò)度分配內(nèi)存的錯(cuò)誤:

某些情況下搜索某些錯(cuò)誤時(shí),我們可能需要檢查MySQL源代碼。例如,對(duì)于在觸發(fā)器中過(guò)度分配內(nèi)存的錯(cuò)誤:

mysql> select event_name, current_alloc, high_alloc from memory_global_by_current_bytes where current_count > 0;
+--------------------------------------------------------------------------------+---------------+-------------+
| event_name                                                                     | current_alloc | high_alloc  |
+--------------------------------------------------------------------------------+---------------+-------------+
| memory/innodb/buf_buf_pool                                                     | 7.29 GiB      | 7.29 GiB    |
| memory/sql/sp_head::main_mem_root                                              | 3.21 GiB      | 3.62 GiB

RAM中最大的塊通常是緩沖池,但存儲(chǔ)過(guò)程中的3G似乎也太高了。

根據(jù)MySQL源代碼文檔,SPHead表示存儲(chǔ)程序的一個(gè)實(shí)例,該程序可能是任何類型(存儲(chǔ)過(guò)程、函數(shù)、觸發(fā)器、事件)。在這種情況下,就會(huì)有潛在的內(nèi)存泄漏。此外,如果我們想要更清楚的知道MySQL內(nèi)存情況,還可以得到一個(gè)更高級(jí)別的總報(bào)告。

mysql> select  substring_index(
    ->     substring_index(event_name, '/', 2),
    ->     '/',
    ->     -1
    ->   )  as event_type,
    ->   round(sum(CURRENT_NUMBER_OF_BYTES_USED)/1024/1024, 2) as MB_CURRENTLY_USED
    -> from performance_schema.memory_summary_global_by_event_name
    -> group by event_type
    -> having MB_CURRENTLY_USED>0;
+--------------------+-------------------+
| event_type         | MB_CURRENTLY_USED |
+--------------------+-------------------+
| innodb             |              0.61 |
| memory             |              0.21 |
| performance_schema |            106.26 |
| sql                |              0.79 |
+--------------------+-------------------+
4 rows in set (0.00 sec)

文章名稱:故障排除指南:MySQL運(yùn)行內(nèi)存不足怎么辦?
新聞來(lái)源:http://jinyejixie.com/article26/ppejcg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)外貿(mào)網(wǎng)站建設(shè)、用戶體驗(yàn)、網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
河池市| 银川市| 东乌珠穆沁旗| 金湖县| 淄博市| 新余市| 渭源县| 长治县| 哈巴河县| 碌曲县| 晋州市| 清镇市| 江安县| 慈溪市| 普洱| 天水市| 杂多县| 安远县| 共和县| 静乐县| 夏津县| 砚山县| 林州市| 资讯 | 丹棱县| 高阳县| 吉安县| 平果县| 淮南市| 大余县| 无锡市| 海淀区| 合作市| 昌邑市| 星子县| 万载县| 化德县| 娄烦县| 双峰县| 明溪县| 马龙县|