• okass 在版块 开源云盘 中回复了话题 nextcloud jbd2/dm-0-8进程占用内存过高 2年, 11个月前

    有关jbd2进程的详细分析文章:性能分析解决jbd2引起的高io问题

    1> 进入mysql后台

    # mysql -uroot -p

    mysql> show variables like ‘%sync_binlog%’;

    +—————+——-+

    | Variable_name | Value |

    +—————+——-+

    | sync_binlog | 1 |

    +—————+——-+

    1 row in set (0.00 sec)

    mysql>

    sync_binlog 值为1,表示每次提交事务后,将binlog_cache中的数据强制写入磁盘。这是最安全但是性能损耗最大的设置,系统Crash的时候最多丢失binlog_cache中未完成的一个事务;

    sync_binlog 值为 0 时,表示当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来做同步,或者cache满了之后才同步到磁盘。默认设置为 0,这时性能是最好的,但风险也是最大的,一旦系统Crash,cache中的所有binlog信息都会丢失;

    sync_binlog 值为 n 时,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。

    所以sync_binlog=1,导致事务写入太频繁,从而出现 [jbd2/dm-0-8] 这个进程占用 IO 95%。

    因此将sync_log设置为一个比较大的数,如 200。

    mysql> set global sync_binlog=500;

    Query OK, 0 rows affected (0.00 sec)

    mysql> show variables like ‘%sync_binlog%’;

    +—————+——-+

    | Variable_name | Value |

    +—————+——-+

    | sync_binlog | 500 |

    +—————+——-+

    1 row in set (0.00 sec)

    mysql>

    0x04 设置 innodb_flush_log_at_trx_commit 变量.

    innodb_flush_log_at_trx_commit 是配置MySql日志何时写入硬盘的参数:

    0:log buffer 将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行。该模式下在事务提交的时候,不会主动触发写入磁盘的操作。

    1:每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去,该模式为系统默认。

    2:每次事务提交时mysql都会把log buffer的数据写入log file,但是flush(刷到磁盘)操作并不会同时进行。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作。

    一般设置为2

    mysql> show variables like ‘%innodb_flush_log_at_trx_commit%’;

    +——————————–+——-+

    | Variable_name | Value |

    +——————————–+——-+

    | innodb_flush_log_at_trx_commit | 1 |

    +——————————–+——-+

    1 row in set (0.01 sec)

    mysql> set global innodb_flush_log_at_trx_commit=2;

    Query OK, 0 rows affected (0.00 sec)

    mysql> show variables like ‘%innodb_flush_log_at_trx_commit%’;

    +——————————–+——-+

    | Variable_name | Value |

    +——————————–+——-+

    | innodb_flush_log_at_trx_commit | 2 |

    +——————————–+——-+

    1 row in set (0.01 sec)

    再次查看 iotop ,[jbd2/dm-2-8]已明显降低。

WirelessLink
Logo