Wordpress + php + mysql CPU 使用率高

我正在使用wordpressphp 7.2mysql 对生产服务器进行负载测试Ver 15.1 Distrib 10.1.44-MariaDB,其中有 4 个 Core i7 CPU 和 10GB Ram 在ubuntu 18.04 LTS上运行。问题是即使负载很低,比如每秒 5 个用户,所有 4 个 CPU 都达到 100%,并且它们仍然存在。一段时间后,CPU 已满,我只收到错误 500。而且,我所有的模块都是最新的。

我尝试禁用 wordpress 中的所有插件并运行相同的测试,但问题仍然存在。

我也使用了一些插件来优化数据库wp-optimize,但没有运气。该/var/log/mysql/mysql-slow.log文件也是空的。

仅几秒后的负载测试结果,包括 htop

Datadog相关测试的监控仪表盘

如上图所示,您可以理解mysqld无缘无故地使用了过多的 CPU。

mysql配置在 /etc/mysqld/my.cnf:


[mysqld]

general_log = on

skip-name-resolve

innodb_read_io_threads=4

innodb_write_io_threads=4

general_log_file = /var/log/mysql/mysql.log

log_error=/var/log/mysql/mysql_error.log

#

#

log_error = /var/log/mysql/error.log

#

# Here you can see queries with especially long duration

#log_slow_queries       = /var/log/mysql/mysql-slow.log

#long_query_time = 2

#log-queries-not-using-indexes

#

# The following can be used as easy to replay backup logs or for replication.

# note: if you are setting up a replication slave, see README.Debian about

#       other settings you may need to change.

#server-id              = 1

#log_bin                        = /var/log/mysql/mysql-bin.log

expire_logs_days        = 10

max_binlog_size         = 100M

#binlog_do_db           = include_database_name

#binlog_ignore_db       = include_database_name

#

# * InnoDB

innodb_buffer_pool_size= 4000M

max_connections =800

wait_timeout=100

interactive_timeout=100

query_cache_size=0

query_cache_type=0

query_cache_limit=2M

tmp_table_size=500M

max_heap_table_size=500M

thread_cache_size=4

performance_schema=ON

innodb_log_file_size=500M

innodb_buffer_pool_instances=3

innodb_autoinc_lock_mode = 2


繁星点点滴滴
浏览 189回答 1
1回答

胡说叔叔

每秒速率 = RPSmy.cnf [mysqld] 部分要考虑的建议:thread_cache_size=256  # from 4 for default minimuminnodb_io_capacity=900  # from 200 to enable higher IOPSread_rnd_buffer_size=128K  # from 256K to reduce handler_read_rnd_next RPS of 256read_buffer_size=256K  # from 128K to reduce handler_read_next RPS of 828这些更改将减少服务器上的 CPU 繁忙。有更多机会可以改善您的 my.cnf。观察:操作系统交换空间为 0. 6GB 对于您的 10GB 服务器来说是合理的并且可以避免内存不足。使用适当的表索引可以减少 1546 的 Select_scan RPhr。在 www.mysqlservertuning.com 的常见问题解答页面上,我们提供了有关问题的提示。如何找到不使用索引的 JOINS 或 QUERIES?通过使用索引改进响应时间并降低 CPU 繁忙百分比。
打开App,查看更多内容
随时随地看视频慕课网APP