linuxsir首页 LinuxSir.Org | Linux、BSD、Solaris、Unix | 开源传万世,因有我参与欢迎您!
网站首页 | 设为首页 | 加入收藏
您所在的位置:主页 > Linux数据库 >

Innodb: 自动开启打印show engine status到err日志

时间:2019-04-10  来源:未知  作者:admin666

一、问题描述

为什么我的err日志里面有大量的show engine innodb status的记录,我自己并没有开启innodb_status_output参数。

二、问题分析

通过查看日志,发现如下输出:
2019-03-21T17:00:02.375231Z 1230497 [Warning] InnoDB: Difficult to find free blocks in the buffer pool (338 search iterations)! 0 failed attempts to flush a page! Consider increasing the buffer pool size. It is also possible
that in your Unix version fsync is very slow, or completely frozen inside the OS kernel. Then upgrading to a
newer version of your operating system may help. Look at the number of fsyncs in diagnostic info below.
Pending flushes (fsync) log: 0; buffer pool: 0. 1446962050 OS file reads, 545881917 OS file writes,
376257282 OS fsyncs. Starting InnoDB Monitor to print further diagnostics to the standard output.

日志也写得很清楚。应该是free block不够了Innodb自动开启了。但是我们需要源码验证一下。

三、源码验证

在源码的buf_LRU_handle_lack_of_free_blocks函数中我们看到如下:
if ((current_ms started_ms + 2000)
        (current_ms last_printout_ms + 2000)
        srv_buf_pool_old_size == srv_buf_pool_size) {
        ib::warn() "Difficult to find free blocks in the buffer pool"
            " (" n_iterations " search iterations)! "
              flush_failures " failed attempts to"
            " flush a page! Consider increasing the buffer pool"
            " size. It is also possible that in your Unix version"
            " fsync is very slow, or completely frozen inside"
            " the OS kernel. Then upgrading to a newer version"
            " of your operating system may help. Look at the"
            " number of fsyncs in diagnostic info below."
            " Pending flushes (fsync) log: "
              fil_n_pending_log_flushes
              "; buffer pool: "
              fil_n_pending_tablespace_flushes
              ". " os_n_file_reads " OS file reads, "
              os_n_file_writes " OS file writes, "
              os_n_fsyncs
              " OS fsyncs. Starting InnoDB Monitor to print"
            " further diagnostics to the standard output.";
        last_printout_ms = current_ms;
        *mon_value_was = srv_print_innodb_monitor;
        *started_monitor = true;
        srv_print_innodb_monitor = true;
        os_event_set(srv_monitor_event);


这里不仅打印出了日志同时设置了参数srv_print_innodb_monitor = true; 并且开始os_event_set(srv_monitor_event);开启了monitor打印线程。那我们看看srv_print_innodb_monitor 对应什么参数呢。如下:
static MYSQL_SYSVAR_BOOL(status_output, srv_print_innodb_monitor,
  PLUGIN_VAR_OPCMDARG, "Enable InnoDB monitor output to the error log.",  NULL, innodb_status_output_update, FALSE);

实际上就是innodb_status_output被自动开了。当然如果查看调用可以在上层函数buf_LRU_get_free_block中查看到调用,实际上就是在free list找不到空闲的block的时候会做输出。buf_LRU_get_free_block还包含了一个块的分配流程大约如下,可自行参考:

 If there is a block in the free list, take it .如果这里找不到就会自动开启innodb_status_output  If no block was in the free list, search from the end of the LRU list and try to free a block there.  No free block was found: try to flush the LRU list.

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

友情链接
  • Linux Watch命令示例
  • Oracle DataGuard 报密码文件错误排查
  • 在Ubuntu 18.04上安装Angular图文详解
  • 关于 Oracle redo与undo 的认识
  • 如何在Ubuntu 18.04,16.04,18.10中安装GNU Emacs 26.1
  • 使用Python的turtle画小猫咪
  • RAC下修改内存配置后数据库无法启动问题
  • 使用Python的turtle画炫酷图形
  • RAC环境新建库时报ORA-28000问题解决方法
  • 使用Python的turtle画小猪乔治和哆啦 A 梦
  • OGG的PURGEOLDEXTRACTS不能工作问题的解决
  • 使Python中的turtle模块画图两只小羊
  • Innodb: 自动开启打印show engine status到err日志
  • ORA-00600: 内部错误代码, 参数: [kdsgrp1] 解决案例
  • 英特尔芯片漏洞使攻击者可以完全访问受影响设备上的所有数据
  • MySQL query_cache_type的DEMAND参数介绍和使用举例
  • 黑客可以修改CT扫描结果
  • MySQL入门基础教程大全
  • 在亚马逊云服务器上找到超过5.4亿条Facebook用户记录
  • 和Pipelining说再见,cURL放弃使用管道技术
  • Python之父再度发声:我们能为中国的“996”程序员做什么?
  • Firefox也将支持不可见图片延迟加载功能
  • Unomi成为Apache软件基金会顶级项目
  • Anaconda和JetBrains联手推出'Anaconda的PyCharm'
  • Windows 10又在生产环境进行测试?微软:发错了
  • Android Q将增强未知来源应用安装的安全性
  • Ubuntu MATE推出树莓派版本
  • Apache服务器存在高危提权漏洞,请升级至最新版本2.4.39
  • 阿里开源混沌工程工具ChaosBlade
  • 如何在Chromium Microsoft Edge中使用画中画
  • NetworkManager 1.17.2开始向NetworkManager 1.18进军
  • Systemd 242 准备发布,XBOOTLDR支持
  • LinkedIn研究表明Flutter是软件工程师中发展最快的技能
  • Unreal Engine 4.22 发布,重构渲染代码及其他改进
  • IBM为GCC 9增加了新的“Arch13”处理器支持
  • Radeon Software Adrenalin 2019 Edition 19.4.1 发布,Bug修复
  • 捕鱼视频
  • 全讯网娱乐
  • 正规的彩票app
  • 大乐透基本走势图
  • 足彩论坛
  • 金牛彩票平台
  • 七星彩号码