MySQL 5.1.73 针对 PHP5.6 应用程序进行调优

MySQL 5.1.73 针对 PHP5.6 应用程序进行调优

我有一个运行 Symfony 2.x 的 PHP5.6 应用程序,由 MySQL 5.1.73 支持。目前,在高峰负载期间,我们的数据层会出现延迟。在正常运行期间,我们每秒大约有 2k 个查询,性能良好,应用服务器的响应时间小于 200ms,其中 45ms 是 MySQL 时间,但在高峰负载时,我们可能会看到每秒 6k 个查询,持续大约 5-10 分钟,每天两次,每个工作日。此时,我们可以看到应用服务器响应达到 8,550ms,其中 8,420ms 是 MySQL 时间。

服务器规格:RAM 64GB Intel(R) Xeon(R) CPU E5-2640 v4 @ 2.40GHz

我们设置为多租户系统,其中每个租户在数据库服务器上都有自己的数据库模式,大约有 3000 个模式。

慢查询日志显示,每个架构中对同一张表的选择都很慢,但这也是吞吐量最高的表。对于我们较繁忙的租户,此表最多可达 70MB,包含约 500,000 行。

我想更改以下配置(一些配置会在几天/几周内逐渐更改)以提高性能:

thread_cache_size:64->128->256->512->1000

我们的线程创建值在峰值负载下可以达到 3000,据我所知,创建线程是一个昂贵的过程,我希望这可以减少这种情况。我想逐渐增加缓存以观察影响。在处理繁忙的 PHP 应用程序时,是否有设置此值的特定策略?

innodb_thread_concurrency:8->0

据我所知,不设置任何限制是最好的选择,除非数据库服务器显示资源争用(但似乎并非如此)。

innodb_buffer_pool_size:16384M -> 45000M key_buffer:32187M -> 500M

大约一年前,我们完成了从 MyISAM 到 InnoDB 的迁移,但我们仍然还没有调整 key_bufferinnodb_buffer_pool_size来反映这一点。

在过去几周内,我们将该table_open_cache值从 1k -> 4k -> 8k 增加,因为我们发现打开的表比可用的表多table_open_cache。这产生了积极影响,但不足以处理我们的负载峰值。

这些配置中是否有任何一个高于或低于合理值?我知道当您对数据集的了解有限时可能很难回答,但请告诉我,我会提供我所能提供的。

我保留了以下可能重要的任何价值:

mysql> SHOW GLOBAL VARIABLES;
+-----------------------------------------+-------------------------------------------------------------------------------------------+
| Variable_name                           | Value                                                                                     |
+-----------------------------------------+-------------------------------------------------------------------------------------------+
| innodb_adaptive_hash_index              | ON                                                                                        |
| innodb_additional_mem_pool_size         | 1048576                                                                                   |
| innodb_autoextend_increment             | 8                                                                                         |
| innodb_autoinc_lock_mode                | 1                                                                                         |
| innodb_buffer_pool_size                 | 17179869184                                                                               |
| innodb_checksums                        | ON                                                                                        |
| innodb_commit_concurrency               | 0                                                                                         |
| innodb_concurrency_tickets              | 500                                                                                       |
| innodb_doublewrite                      | ON                                                                                        |
| innodb_fast_shutdown                    | 1                                                                                         |
| innodb_file_io_threads                  | 4                                                                                         |
| innodb_file_per_table                   | ON                                                                                        |
| innodb_flush_log_at_trx_commit          | 2                                                                                         |
| innodb_flush_method                     | O_DIRECT                                                                                  |
| innodb_lock_wait_timeout                | 50                                                                                        |
| innodb_log_buffer_size                  | 1048576                                                                                   |
| innodb_log_file_size                    | 524288000                                                                                 |
| innodb_max_dirty_pages_pct              | 90                                                                                        |
| innodb_open_files                       | 131072                                                                                    |
| innodb_rollback_on_timeout              | OFF                                                                                       |
| innodb_stats_on_metadata                | ON                                                                                        |
| innodb_support_xa                       | ON                                                                                        |
| innodb_sync_spin_loops                  | 20                                                                                        |
| innodb_table_locks                      | ON                                                                                        |
| innodb_thread_concurrency               | 8                                                                                         |
| join_buffer_size                        | 1048576                                                                                   |
| max_connect_errors                      | 100                                                                                       |
| max_connections                         | 10000                                                                                     |
| max_join_size                           | 18446744073709551615                                                                      |
| max_length_for_sort_data                | 1024                                                                                      |
| max_long_data_size                      | 134217728                                                                                 |
| max_prepared_stmt_count                 | 131072                                                                                    |
| max_tmp_tables                          | 32                                                                                        |
| query_cache_limit                       | 2097152                                                                                   |
| query_cache_min_res_unit                | 4096                                                                                      |
| query_cache_size                        | 1406140416                                                                                |
| query_cache_type                        | ON                                                                                        |
| read_buffer_size                        | 262144                                                                                    |
| read_only                               | OFF                                                                                       |
| read_rnd_buffer_size                    | 262144                                                                                    |                                                             |
| sort_buffer_size                        | 262144                                                                                    |                                                                                |
| table_definition_cache                  | 315000                                                                                    |
| table_lock_wait_timeout                 | 50                                                                                        |
| table_open_cache                        | 8000                                                                                      |                                                                                  |
| thread_cache_size                       | 64                                                                                        |
| thread_handling                         | one-thread-per-connection                                                                 |
| thread_stack                            | 262144                                                                                    |                                                                                |
| timed_mutexes                           | OFF                                                                                       |                                                                          |
| tmp_table_size                          | 67108864                                                                                  |                                                                                    |
| transaction_alloc_block_size            | 8192                                                                                      |
| transaction_prealloc_size               | 4096                                                                                      |
| tx_isolation                            | REPEATABLE-READ                                                                           |

相关内容