Ubuntu Linux,top 命令结果解释

Ubuntu Linux,top 命令结果解释

我是 Linux 操作系统的新手,我在使用基于 drupal 的网站时遇到了问题,速度非常慢。我使用 2 个独立的服务器进行托管和 MYSQL。在执行顶部命令,我得到了以下结果

top - 06:34:26 up 17:54,  1 user,  load average: 4.54, 4.98, 5.36

Tasks:  79 total,   1 running,  78 sleeping,   0 stopped,   0 zombie
Cpu(s): 74.8%us, 23.6%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  1.7%si,  0.0%st
Mem:   4044336k total,  3963584k used,    80752k free,    21760k buffers
Swap:  1477940k total,        0k used,  1477940k free,  3530868k cached

PID   USER      PR  NI  VIRT  RES    SHR  S   %CPU  %MEM    TIME+  COMMAND
1077  mysql     20   0  502m  181m   4124 S    98.8  4.6   549:02.28 mysqld

mysql 进程的 CPU 使用率为 99.7%。这是否意味着我的处理器已达到极限。如何解决此问题?我需要添加更多核心吗?然而,相反,平均负载很低。

我绝对是新手,大部分术语都是从书本上学到的。如果有人能帮忙,我将不胜感激。

答案1

你应该看看为什么MySQL 负载如此之大,如果您已经有 2 个或 4 个核心,那么这可能不是您的问题。一个好的、巧妙优化的数据库系统将能够在 CPU 时间达到最大值之前使用更多的内存。在考虑硬件升级之前,需要考虑以下几点:

  • 表索引
  • 慢查询
  • tmp 表设置
  • (已编辑) 优化表
  • (已编辑)数据库碎片(参见 marcoc 的答案)
  • 系统有足够的 I/O 容量

我只是猜测,但似乎你的系统在数据库本身上花费了太多时间(在 I/O 上没有太多,也没有交换或类似的东西),所以你可能应该检查你的索引...也许数据库只是忙于扫描表,因为它没有适合你运行的查询的索引(如果是这种情况,添加硬件也无济于事)

之后,如果您仍然需要更多马力,我会为系统添加更多内存,可能每个核心最多 4GiB(即,如果您运行 4 个核心,则为 16GiB),但这实际上取决于您的数据集大小和访问模式(主要是读取、主要是写入等...)

答案2

尝试使用这个超级方便的流程图来识别您的问题(虽然我猜您是受到 CPU 限制):替代文本

海登少校的博客

答案3

如果该服务器是 MySQL,谁会使用所有内存?... MySQL 使用 181 Mb 内存。它非常小。

  1. 查看:SHOW FULL PROCESSLIST\G;
  2. 查看日志文件(mysql 和你的网络服务器)
  3. 使用 mysqltuner.pl(http://mysqltuner.pl/mysqltuner.pl)来调整my.cnf。
  4. 硬件层面的优化(增加内存和 CPU)

答案4

你写道该网站

结果真的很慢

从什么时候开始的?是逐渐发生的吗?

如果网站逐渐变慢,那么也可能是数据库碎片问题。在这种情况下,或者如果您无法创建索引,也可以考虑进行非常简单的转储/恢复。

相关内容