1. 程式人生 > >Mysql佔用大量寫I/O

Mysql佔用大量寫I/O

早上收到zabbix告警,發現某臺存放監控資料的資料庫主機CPU的IOwait較高,一直持續較長時間。

image

登入伺服器檢視磁碟IO發現佇列高達90%多,而且經常反覆如此

image

通過iotop檢視發現佔用io較大的程序是mysql

image

登入mysql檢視show processlist,發現基本上每次io佇列較高時都是在insert時,以為是插入語句有問題,於是開啟mysql慢查詢日誌,觀察一段時間磁碟io仍然較高,但是發現並沒有任何慢查詢語句;

查詢關於mysql IO問題優化資料,《【轉載】sync_binlog和innodb_flush_log_at_trx_commit 淺析

》說到 sync_binloginnodb_flush_log_at_trx_commit 兩個引數,這兩個引數是控制MySQL 磁碟寫入策略以及資料安全性的關鍵引數

image

由於這臺主機作為監控服務資料庫,所以在部署之初沒有做太多優化,配置基本保持預設,所以在每次事務提交都對應一次寫操作,導致寫操作太過頻繁。

於是修改sync_binlog和innodb_flush_log_at_trx_commit引數

set global sync_binlog=500;  

set global innodb_flush_log_at_trx_commit=2;

修改完sync_binlog和innodb_flush_log_at_trx_commit兩個引數後,觀察一段時間發現CPU的IOwait明顯降低

image

相關推薦

Mysql佔用大量I/O

早上收到zabbix告警,發現某臺存放監控資料的資料庫主機CPU的IOwait較高,一直持續較長時間。 登入伺服器檢視磁碟IO發現佇列高達90%多,而且經常反覆如此 通過iotop檢視發現佔用io較大的程序是mysql 登入mysql檢視show p

mysql 占用大量I/O

時間 資料 process inf roc lob zabbix commit 一段時間 zabbix告警,發現某臺存放監控數據的數據庫主機CPU的IOwait較高,一直持續較長時間。 登錄服務器查看磁盤IO發現隊列高達90%多,而且經常反復如此 通過iotop查看發現占用

java檔案讀I/O

寫和讀檔案:     import java.io.*;     public class fileStreamTest2{       public static void main(String[

是什麼導致MySQL資料庫伺服器磁碟I/O高? – 運維派

0、導讀 有個MySQL伺服器的磁碟I/O總有過高報警,怎麼回事? 1、問題 我的朋友小明,TA有個MySQL伺服器最近總是報告磁碟I/O非常高,想著我這有免費的不用白不用的企業技術服務(TA自己這麼想的),就找我幫忙給把把脈。 作為一個經驗豐富(踩坑不斷)的DBA,出現這種問題,一般來說,磁碟I/

mysql佔用大量磁碟空間問題原因及解決方法

前言 我們使用mysql或者是其他的資料的時候總是會遇到資料庫佔用大量磁碟空間,導致磁碟空間不足,從而導致其他問題(例如:資料庫重啟後無法啟動;資料庫無法寫入資料等)。 要解決這一個問題,方法就是對資料庫的某些不必要的檔案進行刪除。在mysql資料庫中佔

mysql-5.7 Using Asynchronous I/O on Linux

日誌文件 cnblogs fsync sin 操作 得到 日誌 mysql mys 一、mysql - innodb 使用異步IO的場景   總的來說innodb 只會對數據文件采用異步IO,為了保存日誌是真正被寫入到磁盤,innodb不會對日誌文件啟用異步IO   更新細

標準I/O文件

sizeof linux 文件 文件的 main 方式 次數 col tdi 一、函數原型   1、FILE *fopen(const char *path, const char *mode);     path:要打開文件路徑及文件名;     mode: r 打開只

【JavaNIO的深入研究4】內存映射文件I/O,大文件讀操作,Java nio之MappedByteBuffer,高效文件/內存映射

int start lib 交換文件 bsp 沒有 res collected str time 內存映射文件能讓你創建和修改那些因為太大而無法放入內存的文件。有了內存映射文件,你就可以認為文件已經全部讀進了內存,然後把它當成一個非常大的數組來訪問。這種解決辦法能大大簡化修

Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work

重新 master 過去的 cati stop ica clas mas ids 配置MySQL主從復制,遇到報錯 Fatal error: The slave I/O thread stops because master and slave have equal My

MySQL在刪除表時I/O錯誤原因分析

隨機 是否 mysq let 影響 syn type src fc7 歡迎大家前往騰訊雲+社區,獲取更多騰訊海量技術實踐幹貨哦~ 本文由騰訊數據庫技術 發表於雲+社區專欄 問題現象 最近使用sysbench測試MySQL,由於測試時間較長,寫了一個腳本按prepare-

mysql查詢sending data佔用大量時間的問題處理

問題描述: 某條sql語句在測試環境執行只需要1秒不到,到了生產環境執行需要8秒以上 在phpmyadmin裡面執行效能分析,發現sending data佔用了差不多90%以上的時間 查詢一下“Sending data”狀態的含義,原來這個狀態的名稱很具有誤導性,所謂的“Sending

深入淺出MySQL 第22章 磁碟I/O問題

對於比較大的資料庫,磁碟I/O 一般總會成為資料庫的一個性能瓶頸 SQL優化,資料庫物件優化,資料庫引數優化,以及應用程式優化等,大部分都是想用過減少或延緩磁碟讀來減輕磁碟I/O的壓力及其對效能的影響. 解決磁碟I/O問題,減少或延緩磁碟操作是一重要方面,但磁碟I/O是不可避免的,因此,

C語言-讀檔案I/O

C語言讀寫檔案的步驟一般是: 建立或開啟檔案 > 讀或寫檔案 > 關閉檔案 當然讀或寫的過程中還可以通過操作當前檔案偏移量來控制讀寫位置。 下面分別介紹這些函式。 標頭檔案: #include <fcntl.h> //此標頭檔案定義了以下oflag O_RDO

檔案I/O操作

在上一篇文章中,我簡單講述瞭如何進行開啟檔案操作。而在這一篇文章中,我將會對開啟的檔案進行操作。 在進行檔案讀寫操作之前,需要了解一個緩衝區(buff)的概念,緩衝區是在記憶體中預留指定大小的儲存空間用來對I/O的資料做臨時儲存,這部分預留的記憶體空間叫緩衝區

有關I/O的快取的認識

                                  I/O緩衝內部執行情況 1.簡單的概念 在學習java的I/O操作的時候,對它的緩衝機制有一點疑惑,所以搜尋相關資料,想要大概對內部的執行情況有一個瞭解,加深自己對它的認識。 相關結構的認識: 外存:

22.Mysql磁碟I/O

22.磁碟I/O問題磁碟IO是資料庫效能瓶頸,一般優化是通過減少或延緩磁碟讀寫來減輕磁碟IO的壓力及其對效能的影響。增強磁碟讀寫效能和吞吐量也是重要的優化手段。 22.1 使用磁碟陣列 RAID(Redundant Array of Inexpensive Disk)是指廉價磁碟冗餘陣列,即磁碟陣列。 RA

22.Mysql磁盤I/O

基礎上 The 現象 -m 檢查 led 數據倉庫 等待時間 -h 22.磁盤I/O問題磁盤IO是數據庫性能瓶頸,一般優化是通過減少或延緩磁盤讀寫來減輕磁盤IO的壓力及其對性能的影響。增強磁盤讀寫性能和吞吐量也是重要的優化手段。 22.1 使用磁盤陣列 RAID(Red

JAVA exception異常處理+I/O操作讀檔案 筆記

JAVA  異常處理  JAVA的異常5個關鍵字try...catch...finally..throw..throws 捕獲異常 宣告異常 丟擲異常 try 執行可能產生異常的程式碼 throws

ceph I/O 路徑 -- rbd

ssize_t rbd_write2(rbd_image_t image, uint64_t ofs, size_t len, const char *buf, int op_flags) int r = ictx->aio_work_queue->write(o

I/O流】檔案輸入與輸出(Scanner)& Scanner和io流讀有何區別?(待填坑)

對檔案進行讀取,僅需要用File物件構造一個Scanner物件Scanner in= new Scanner(Paths.get("myfile.tet"),"UTF-8");如果檔名中含反斜槓符號,需要在每個反斜槓之前加一個額外的反斜槓如:“c:\\mydirectory\