mysql - Percona 社区版和 MySql 社区版给出 “InnoDB: page_cleaner: 1000ms intended loop took 0ms” ?

标签 mysql innodb

2017-09-12T19:04:53.549339Z 0 [Note] InnoDB: page_cleaner: 1000ms intended loop took 23911ms. The settings might not be optimal. (flushed=200 and evicted=0, during the time.)

我在 Percona Community Edition 和 MySql Community Edition 上收到此错误。我想知道这是否只是 Percona 和 MySql 社区版的问题...升级到 MySQL 企业版是否有助于解决此问题?

有几篇文章提出了将 innodb_lru_scan_深度从默认的 1024 降低到 256 的建议。这并不能真正解决这个问题。不知道有人在企业版上遇到过这个问题吗?

[Updating post to include SHOW VARIABLES like 'innodb%']
sql> show variables like 'innodb%';
+------------------------------------------+------------------------+
| Variable_name                            | Value                  |
+------------------------------------------+------------------------+
| innodb_adaptive_flushing                 | ON                     | 
| innodb_adaptive_flushing_lwm             | 10                     | 
| innodb_adaptive_hash_index               | ON                     | 
| innodb_adaptive_hash_index_parts         | 8                      | 
| innodb_adaptive_max_sleep_delay          | 150000                 | 
| innodb_api_bk_commit_interval            | 5                      | 
| innodb_api_disable_rowlock               | OFF                    | 
| innodb_api_enable_binlog                 | OFF                    | 
| innodb_api_enable_mdl                    | OFF                    | 
| innodb_api_trx_level                     | 0                      | 
| innodb_autoextend_increment              | 64                     | 
| innodb_autoinc_lock_mode                 | 1                      | 
| innodb_buffer_pool_chunk_size            | 134217728              | 
| innodb_buffer_pool_dump_at_shutdown      | ON                     | 
| innodb_buffer_pool_dump_now              | OFF                    | 
| innodb_buffer_pool_dump_pct              | 25                     | 
| innodb_buffer_pool_filename              | ib_buffer_pool         | 
| innodb_buffer_pool_instances             | 8                      | 
| innodb_buffer_pool_load_abort            | OFF                    | 
| innodb_buffer_pool_load_at_startup       | ON                     | 
| innodb_buffer_pool_load_now              | OFF                    | 
| innodb_buffer_pool_size                  | 53687091200            | 
| innodb_change_buffer_max_size            | 25                     | 
| innodb_change_buffering                  | all                    | 
| innodb_checksum_algorithm                | crc32                  | 
| innodb_checksums                         | ON                     | 
| innodb_cmp_per_index_enabled             | OFF                    | 
| innodb_commit_concurrency                | 0                      | 
| innodb_compression_failure_threshold_pct | 5                      | 
| innodb_compression_level                 | 6                      | 
| innodb_compression_pad_pct_max           | 50                     | 
| innodb_concurrency_tickets               | 5000                   | 
| innodb_data_file_path                    | ibdata1:12M:autoextend | 
| innodb_data_home_dir                     |                        | 
| innodb_deadlock_detect                   | ON                     | 
| innodb_default_row_format                | dynamic                | 
| innodb_disable_sort_file_cache           | OFF                    | 
| innodb_doublewrite                       | ON                     | 
| innodb_fast_shutdown                     | 1                      | 
| innodb_file_format                       | Barracuda              | 
| innodb_file_format_check                 | ON                     | 
| innodb_file_format_max                   | Barracuda              | 
| innodb_file_per_table                    | ON                     | 
| innodb_fill_factor                       | 100                    | 
| innodb_flush_log_at_timeout              | 1                      | 
| innodb_flush_log_at_trx_commit           | 2                      | 
| innodb_flush_method                      | O_DIRECT               | 
| innodb_flush_neighbors                   | 1                      | 
| innodb_flush_sync                        | ON                     | 
| innodb_flushing_avg_loops                | 30                     | 
| innodb_force_load_corrupted              | OFF                    | 
| innodb_force_recovery                    | 0                      | 
| innodb_ft_aux_table                      |                        | 
| innodb_ft_cache_size                     | 8000000                | 
| innodb_ft_enable_diag_print              | OFF                    | 
| innodb_ft_enable_stopword                | ON                     | 
| innodb_ft_max_token_size                 | 84                     | 
| innodb_ft_min_token_size                 | 3                      | 
| innodb_ft_num_word_optimize              | 2000                   | 
| innodb_ft_result_cache_limit             | 2000000000             | 
| innodb_ft_server_stopword_table          |                        | 
| innodb_ft_sort_pll_degree                | 2                      | 
| innodb_ft_total_cache_size               | 640000000              | 
| innodb_ft_user_stopword_table            |                        | 
| innodb_io_capacity                       | 15000                  | 
| innodb_log_files_in_group                | 2                      |
| innodb_log_group_home_dir                | ./                     |
| innodb_log_write_ahead_size              | 8192                   |
| innodb_lru_scan_depth                    | 256                    |
| innodb_max_dirty_pages_pct               | 75.000000              |
| innodb_max_dirty_pages_pct_lwm           | 0.000000               |
| innodb_max_purge_lag                     | 0                      |
| innodb_max_purge_lag_delay               | 0                      |
| innodb_max_undo_log_size                 | 1073741824             |
| innodb_monitor_disable                   |                        |
| innodb_monitor_enable                    |                        |
| innodb_monitor_reset                     |                        |
| innodb_monitor_reset_all                 |                        |
| innodb_numa_interleave                   | OFF                    |
| innodb_old_blocks_pct                    | 37                     |
| innodb_old_blocks_time                   | 1000                   |
| innodb_online_alter_log_max_size         | 134217728              |
| innodb_open_files                        | 400                    |
| innodb_optimize_fulltext_only            | OFF                    |
| innodb_page_cleaners                     | 4                      |
| innodb_page_size                         | 16384                  |
| innodb_print_all_deadlocks               | OFF                    |
| innodb_purge_batch_size                  | 300                    |
| innodb_purge_rseg_truncate_frequency     | 128                    |
| innodb_purge_threads                     | 4                      |
| innodb_random_read_ahead                 | OFF                    |
| innodb_read_ahead_threshold              | 56                     |
| innodb_read_io_threads                   | 4                      |
| innodb_read_only                         | OFF                    |
| innodb_replication_delay                 | 0                      |
| innodb_rollback_on_timeout               | OFF                    |
| innodb_rollback_segments                 | 128                    |
| innodb_sort_buffer_size                  | 1048576                |
| innodb_spin_wait_delay                   | 6                      |
| innodb_stats_auto_recalc                 | ON                     |
| innodb_stats_include_delete_marked       | OFF                    |
| innodb_stats_method                      | nulls_equal            |
| innodb_stats_on_metadata                 | OFF                    |
| innodb_stats_persistent                  | ON                     |
| innodb_stats_persistent_sample_pages     | 20                     |
| innodb_stats_sample_pages                | 8                      |
| innodb_stats_transient_sample_pages      | 8                      |
| innodb_status_output                     | OFF                    |
| innodb_status_output_locks               | OFF                    |
| innodb_strict_mode                       | ON                     |
| innodb_support_xa                        | ON                     |
| innodb_sync_array_size                   | 1                      |
| innodb_sync_spin_loops                   | 30                     |
| innodb_table_locks                       | ON                     |
| innodb_temp_data_file_path               | ibtmp1:12M:autoextend  |
| innodb_thread_concurrency                | 16                     |
| innodb_thread_sleep_delay                | 0                      |
| innodb_tmpdir                            |                        |
| innodb_undo_directory                    | ./                     |
| innodb_undo_log_truncate                 | OFF                    |
| innodb_undo_logs                         | 128                    |
| innodb_undo_tablespaces                  | 0                      |
| innodb_use_native_aio                    | ON                     |
| innodb_version                           | 5.7.18                 |
| innodb_write_io_threads                  | 16                     |
+------------------------------------------+------------------------+

最佳答案

(不是答案,而是来自变更日志的一些信息和链接) (链接是相对于 dev.mysql.com)

----- 2015-08-03 5.7.8 候选版本 -- 添加或更改的功能 -- InnoDB -----

innodb_purge_threads (/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_purge_threads ) 和 innodb_page_cleaners (/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_page_cleaners ) 的默认值已从 1 更改为到 4. 如果页面清理线程的数量超过缓冲池实例的数量,则 innodb_page_cleaners (/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_page_cleaners ) 会自动设置为与 innodb_buffer_pool_instances (/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_buffer_pool_instances )。

----- 2014-09-25 5.7.5 里程碑 15 -- 添加或更改的功能 -- InnoDB -----

为了获得最佳的关闭和恢复性能,MySQL 5.7.4 中引入的多线程页面清理功能 (innodb_page_cleaners ( http://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_page_cleaners )) 现在支持关闭和恢复阶段。 (错误#18805275)

----- 2014-03-31 5.7.4 里程碑 14 -- 添加或更改的功能 -- InnoDB,性能 -----

InnoDB 现在支持多个 page_cleaner 线程来从缓冲池实例中刷新脏页。新的系统变量 innodb_page_cleaners 用于指定 page_cleaner 线程的数量。默认值 1 保持 MySQL 5.7.4 之前的配置,其中只有一个 page_cleaner 线程。此增强功能建立在 MySQL 5.6.2 中完成的工作的基础上,该版本引入了单页清理线程来卸载 InnoDB 主线程的缓冲池刷新工作。

----- 2011-10-03 5.6.3 里程碑 6 -- 添加或更改的功能 -- InnoDB,性能 -----

工作继续从 InnoDB 主线程卸载刷新 ( http://dev.mysql.com/doc/refman/5.6/en/glossary.html#glos_flush ) 操作,而是在 page_cleaner 线程中执行这些操作。缓冲池刷新算法的最新更改可以提高某些 I/O 密集型工作负载的性能,特别是在具有多个缓冲池实例的配置中。您可以通过调整 innodb_lru_scan_depth ( http://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#sysvar_innodb_lru_scan_depth ) 和 innodb_flush_neighbors ( http://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#sysvar_innodb_flush_neighbors ) 配置选项的设置来控制此功能。要找到最佳设置,请在打开和关闭自适应哈希索引 ( http://dev.mysql.com/doc/refman/5.6/en/glossary.html#glos_adaptive_hash_index ) 和双写缓冲区 ( http://dev.mysql.com/doc/refman/5.6/en/glossary.html#glos_doublewrite_buffer ) 的情况下测试上述设置的每个组合。有关更多详细信息,请参阅调整 InnoDB 缓冲池刷新 ( http://dev.mysql.com/doc/refman/5.6/en/innodb-lru-background-flushing.html )。

=======

建议阅读有关后台刷新的文章,并单击 bugs.mysql.com 中任何相关错误的影响我,例如 81899和/或 76661

此外,... innodb_io_capacity = 15000 似乎很高,即使对于 SSD 也是如此。

关于mysql - Percona 社区版和 MySql 社区版给出 “InnoDB: page_cleaner: 1000ms intended loop took 0ms” ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46203558/

相关文章:

Mysql插入行忽略当前事务

mysql - 连接 innodb 中另一个表的第一个有效行

php - 如何使用多个标签快速搜索帖子/列表?

python - 查询以选择帖子和所有附件

mysql - 修复 Docker 中的 World-writable MySql 错误

mysql - 从 shell 脚本处理 mysql 查询中的星号 * 条目

mysql - 使用 MySQL/InnoDB 一致地在 2 个表中创建 2 条记录

php - 如何使用php在网页上的单个查询中显示多个表

mysql - 如何选择在mysql中找到和未找到的输入数组的所有数据

mysql - 手动将外键插入表时允许自由输入