php - MySQL 进程占用 150-400% CPU
问题描述
我的软件对我的服务器进行了很多 MySQL 查询,过去我从未遇到过任何问题,但最近没有加载任何内容,没有网页,没有运行 SQL,什么也没有。我设法为我的服务器打开 WHM 并终止该进程,结果却看到它飙升至 300%。我所做的一切都没有让它下降。我需要分享哪些信息才能获得帮助?我不是系统管理员,也没有一个或一个资源。我通常不会寻求帮助,只是优化我的所有查询,因为在过去的 3 个月里这不是问题,但突然变成了一个无处不在的问题,至少我没有注意到。此时我的程序说我的一个数据库表已经崩溃并且需要修复......我该怎么办?在此先感谢您的帮助...
我已经考虑过优化,但我希望有一个快速的解决方案来实施,因为我有客户在等待,然后我可以花几天时间优化我的 SQL,就像我说的那样,以前没有任何问题。我对此感到困惑。
此外,我不确定这是否有帮助,但跟踪 WHM 中的过程会重复打印此内容,仅此而已:
fcntl(16, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(16, F_SETFL, O_RDWR|O_NONBLOCK) = 0
accept(16, {sa_family=AF_LOCAL, NULL}, [2]) = 35
fcntl(16, F_SETFL, O_RDWR) = 0
setsockopt(35, SOL_IP, IP_TOS, [8], 4) = -1 EOPNOTSUPP (Operation not supported)
futex(0x13298a4, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x13298a0, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1
futex(0x1327240, FUTEX_WAKE_PRIVATE, 1) = 1
poll([{fd=14, events=POLLIN}, {fd=16, events=POLLIN}], 2, -1) = 1 ([{fd=16, revents=POLLIN}])
/etc/my.conf
innodb_file_per_table=1
default-storage-engine=MyISAM
performance-schema=0
max_allowed_packet=268435456
open_files_limit=10000
就文件而言,这就是我可以使用的所有内容my.conf
。错误日志不存在,/var/log
所以我在这方面没有什么可提供的......
SQL 版本:
[Server] # mysql -V
mysql Ver 14.14 Distrib 5.6.41, for Linux (x86_64) using EditLine wrapper
我对此还有一个额外的问题或补充。我不知道这是否有很大的不同,但是,假设我的代码在 mysql 进程上使用 30% 的 CPU 运行,我实际上可以关闭代码并且 mysql 进程的 CPU 使用率不会改变。这是什么意思?
编辑:(这些都将在 2018 年 12 月 9 日起一周内到期)
我列出的 my.cnf 文件内容就是所有内容。没有其他的。我会得到top
命令,iostat -xm 5 3
当我再次全速运行软件时,会看到结果。
解决方案
Rate Per Second=RPS 根据您的 Linux ulimit -a 报告考虑的建议。
ulimit -n 16384 to raise Open Files limit from 1024 to support your activities.
要使这种情况在 Linux 关机/重启后持续存在,请查看此 url。
https://glassonionblog.wordpress.com/2013/01/27/increase-ulimit-and-file-descriptors-limit/
由于 Linux 的版本,您的具体情况可能略有不同。
为您的 my.cnf [mysqld] 部分考虑的建议
innodb_lru_scan_depth=100 # from 1024 to reduce CPU busy every second. 93% savings for this one function.
thread_cache_size=32 # from 9 for thread breathing room and growth.
innodb_io_capacity=1800 # from 200 to take advantage of your HDD IOPS capacity
key_cache_age_threshold=7200 # from 300 seconds to reduce key_reads RPS of 16
query_cache_size=0 # from 1M to conserve RAM - QC is OFF and not used
query_cache_limit=0 # from 1M to conserve RAM - QC is OFF and not used
key_buffer_size=128M # from 8M which had NO free space at the end of your work day
有关其他建议,请参阅我的个人资料,网络个人资料以获取联系信息。
推荐阅读
- php - Rest Full API PHP - 获取回发事件
- php - 如何回显 php 错误 (ftp_get)
- python - Python sklearn 的带有分类箱的标签编码器
- python - 如何根据 Pyspark 中数组列中的值创建新列
- vba - 在 excel 中记录了一个宏,我想更改代码中的某些内容
- ios - 通过另一个 ViewController 从 ViewController 获取数据
- git - Git:在 Visual Studio 中更改推送 URL 后无法推送更改
- rest - CircleCI api 无效的构建参数
- php - 在 Woocommerce 中的简短描述之后移动产品描述
- javascript - 有没有办法自定义交易视图代码小部件?