PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
19857 mysql 20 0 514m 47m 3404 S 386 9.7 4511:45 mysqld
15659 www-data 20 0 205m 11m 4856 S 7 2.3 0:00.67 apache2
15701 www-data 20 0 205m 11m 4424 S 5 2.2 0:00.19 apache2
15700 www-data 20 0 0 0 0 Z 1 0.0 0:00.02 apache2 <defunct>
这些是我在 Ubuntu 上的结果top
。我很好奇为什么我的网站今天一直宕机。可能是这个原因吗?
为什么 MySQL 占用了 386% 的 CPU?这是正常的吗?我该怎么做才能解决这个问题?
答案1
...从哪儿开始。
如果您的网站确实很繁忙,并且您可以证明使用是合理的,那么这是正常的。但是,很有可能是一些非优化查询和糟糕的表结构导致了您的大部分问题。
我可能会开始查看mysqladmin processlist
哪些查询运行时间最长,然后从那里开始优化。
您还可以在 MySQL 中启用慢查询日志记录,以便长期了解正在发生的事情以及哪些查询给您带来了麻烦。
要全面解决这个问题,您确实需要戴上 DBA 的帽子,然后从那里开始。如果您不具备这方面的知识或技能,那么聘请合同制 DBA 来查看这个问题并提供建议可能更容易。
不幸的是,全面解决这个问题需要时间、知识和现有数据集的经验。