【问题标题】:Optimizing MariaDB for wordpress为 wordpress 优化 MariaDB
【发布时间】:2017-09-16 20:22:26
【问题描述】:

我有一台有 2 个 CPU 内核和 1GB 内存的服务器。该服务器只运行一个 wordpress 站点。我的服务器堆栈是 LEMP。我在设置 wordpress 站点两周后运行了 mysql Tuner。 这是结果

[!!] Maximum reached memory usage: 884.8M (89.15% of installed RAM)
[!!] Maximum possible memory usage: 1.4G (139.86% of installed RAM)
[!!] Overall possible memory usage with other process exceeded memory
[!!] Slow queries: 15% (629K/4M)
[OK] Highest usage of available connections: 9% (19/200)
[OK] Aborted connections: 0.75%  (4103/548857)
[!!] name resolution is active : a reverse name resolution is made for each new connection and can reduce performance

这是我的my.cnf 配置

 [mysql]

# CLIENT #
port                           = 3306
socket                         = /var/lib/mysql/mysql.sock

[mysqld]

# GENERAL #
user                           = mysql
default-storage-engine         = InnoDB
socket                         = /var/lib/mysql/mysql.sock
pid-file                       = /var/lib/mysql/mysql.pid

# MyISAM #
key-buffer-size                = 32M
myisam-recover                 = FORCE,BACKUP

# SAFETY #
max-allowed-packet             = 16M
max-connect-errors             = 1000000

# DATA STORAGE #
datadir                        = /var/lib/mysql/

# BINARY LOGGING #
log-bin                        = /var/lib/mysql/mysql-bin
expire-logs-days               = 14
sync-binlog                    = 1

# CACHES AND LIMITS #
tmp-table-size                 = 32M
max-heap-table-size            = 32M
query-cache-type               = 0
query-cache-size               = 0
max-connections                = 200
thread-cache-size              = 20
open-files-limit               = 65535
table-definition-cache         = 1024
table-open-cache               = 2048

# INNODB #
innodb-flush-method            = O_DIRECT
innodb-log-files-in-group      = 2
innodb-log-file-size           = 64M
innodb-flush-log-at-trx-commit = 1
innodb-file-per-table          = 1
innodb-buffer-pool-size        = 624M

# LOGGING #
log-error                      = /var/lib/mysql/mysql-error.log
log-queries-not-using-indexes  = 1
slow-query-log                 = 1
slow-query-log-file            = /var/lib/mysql/mysql-slow.log

如何优化配置来解决这些问题

【问题讨论】:

    标签: mysql wordpress mariadb


    【解决方案1】:

    有一个非常糟糕的设置:

    innodb-buffer-pool-size        = 624M
    

    在可能同时包含 WP 和 MySQL 的 1GB 小型服务器中?将其更改为 200M。并注意交换。如果有任何交换,降低它更多。交换会导致大量的 I/O;最好缩小设置。这是一个良好的开端:

    tmp-table-size                 = 32M  -> 8M
    max-heap-table-size            = 32M  -> 8M
    query-cache-type               = 0    -- good
    query-cache-size               = 0    -- good
    max-connections                = 200  -> 50
    thread-cache-size              = 20
    open-files-limit               = 65535
    table-definition-cache         = 1024 -> 200
    table-open-cache               = 2048 -> 300
    

    你打开了慢日志?让我们看看最差的查询,如mysqldumpslow -s tpt-query-digest 所示。

    这是另一个提示。这个重要的表目前有糟糕的索引;这些会有所帮助:

    CREATE TABLE wp_postmeta (
        post_id …,
        meta_key …,
        meta_value …,
        PRIMARY KEY(post_id, meta_key),
        INDEX(meta_key)
    ) ENGINE=InnoDB;
    

    WORDPRESS 是否在收听?

    原因如下:

    • AUTO_INCREMENT 是浪费
    • 这是一个更好的PK
    • 必要时使用 191(5.6.3 到 5.7.6)
    • 用于集群 PK 的 InnoDB

    更多详情: http://mysql.rjweb.org/doc.php/index_cookbook_mysql#speeding_up_wp_postmeta

    【讨论】:

      猜你喜欢
      • 2017-04-28
      • 2018-07-24
      • 1970-01-01
      • 2021-04-06
      • 2018-02-07
      • 1970-01-01
      • 2016-07-09
      • 1970-01-01
      • 2019-01-01
      相关资源
      最近更新 更多