为了账号安全,请及时绑定邮箱和手机立即绑定

Wordpress + php + mysql CPU 使用率高

Wordpress + php + mysql CPU 使用率高

PHP
繁星点点滴滴 2023-03-04 14:57:21
我正在使用wordpress、php 7.2和mysql 对生产服务器进行负载测试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文件也是空的。仅几秒后的负载测试结果,包括 htopDatadog相关测试的监控仪表盘如上图所示,您可以理解mysqld无缘无故地使用了过多的 CPU。mysql配置在 /etc/mysqld/my.cnf:[mysqld]general_log = onskip-name-resolveinnodb_read_io_threads=4innodb_write_io_threads=4general_log_file = /var/log/mysql/mysql.loglog_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.logexpire_logs_days        = 10max_binlog_size         = 100M#binlog_do_db           = include_database_name#binlog_ignore_db       = include_database_name## * InnoDBinnodb_buffer_pool_size= 4000Mmax_connections =800wait_timeout=100interactive_timeout=100query_cache_size=0query_cache_type=0query_cache_limit=2Mtmp_table_size=500Mmax_heap_table_size=500Mthread_cache_size=4performance_schema=ONinnodb_log_file_size=500Minnodb_buffer_pool_instances=3innodb_autoinc_lock_mode = 2
查看完整描述

1 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

每秒速率 = RPS


my.cnf [mysqld] 部分要考虑的建议:


thread_cache_size=256  # from 4 for default minimum

innodb_io_capacity=900  # from 200 to enable higher IOPS

read_rnd_buffer_size=128K  # from 256K to reduce handler_read_rnd_next RPS of 256

read_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 繁忙百分比。


查看完整回答
反对 回复 2023-03-04
  • 1 回答
  • 0 关注
  • 174 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信