标签: top

在 Linux / EC2 上的 iowait(顶部为 %wa)期间 CPU 是否实际被占用?

在具有 8 个 EBS 卷和大量磁盘流量的 8 路 Amazon EC2 实例(运行 Linux 2.6.21)上,我们看到顶部的 %wa 很高 (30-40%),并且平均负载很高 (8-9)。我的理解是,等待来自 EBS 卷的 I/O 的进程被计入平均负载(一个 ps 显示几个处于 D 状态的进程,大约与负载平均一样多)。

但是,不清楚 %wa 是什么意思。CPU 是否真的被占用等待 EBS 卷的响应,或者内核是否在其上调度了另一个进程?我预计会安排另一个流程;但后来我不明白为什么 iowait 时间会被表示为总 CPU 时间的百分比(除非百分比加起来超过 100%)。

只要我们不最大化 EBS 卷的 I/O 容量,我不担心,但是如果 CPU 被占用等待 I/O,我认为我们的机器会在用完我之前用完 CPU 容量/O 容量。

linux top iowait amazon-ec2 amazon-ebs

4
推荐指数
1
解决办法
8777
查看次数

出现问题时给我我的杀伤力

我们已经经历过几次了。突然我们的生产服务器不会响应,因为一个进程处于无限循环中,或者 MySQL 服务器停止服务新请求,因为一个查询阻塞了一切......

我们通过 SSH 连接到服务器并使用ps auxortop找到罪魁祸首,mytop或者SHOW FULL PROCESSLIST在 MySQL 中找到违规的进程 ID 和kill它。然后我们尝试在测试服务器上重新创建这种情况并修复错误。

但有时服务器挂得太好了,您ps aux/ top/ mytop/SHOW FULL PROCESSLIST无法通过 - 甚至管理员也被阻止。

确保管理员始终可以访问服务器并终止违规进程或查询(在 Linux 和 MySQL 上)的最佳方法是什么?

  • 我们可以为不同的用户分配优先级吗?
  • 为root预留部分资源?

我已经检查过nice(1),但不断地与 nice -20 建立开放连接似乎有点过分且难以使用(更不用说作为 root 的危险了)。

mysql linux command-line-interface kill top

4
推荐指数
1
解决办法
445
查看次数

Linux 服务器性能分析 - 如何查看导致高负载的原因

如果服务器遇到高负载,我会使用 top 和类似工具来解决原因。但是,只有在服务器遇到问题时我可以进行分析,这才有效。

有什么好的工具可以找到以前服务器负载高的根本原因?例如,我计划每 5 分钟进行一次 cron 作业以保存“top”输出、apache 服务器统计信息、mysql 进程列表等。但这似乎不太优雅,想知道是否有人已经提出了一些实用程序来完成此任务。

linux performance top

4
推荐指数
1
解决办法
1458
查看次数

哪个 PHP 脚本使我的 VPS 过载?

有没有办法获取当前正在攻击我的 VPS 的 PHP 脚本文件名?

例如,当我查看“顶部”时,我看到:

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
7622 itil      17   0 61388  11m 6004 R 45.8  2.3   0:00.13 php
7626 itil      17   0 58360 8632 5440 R 24.6  1.6   0:00.07 php
Run Code Online (Sandbox Code Playgroud)

如何找出特定时间 PHP 正在处理的文件?

linux php vps top

4
推荐指数
1
解决办法
966
查看次数

Linux top 命令。内存使用情况

我正在使用 Jmeter 测试我的 Web 服务器。我启动 40 个用户测试,然后 dump top 命令。我看到的是 40 个(+1 个主机)apache 进程。每个进程使用 appr。7mb RES 内存。但是 7*40 是 280 mb 的内存。但是 top 显示总共有 508mb 和 345mb 空闲。所以只使用了 163mb... 为什么我有这么奇怪的东西?

top - 04:49:24 up 1 day, 10:49,  1 user,  load average: 0.28, 0.18, 0.16
Tasks: 107 total,   2 running, 105 sleeping,   0 stopped,   0 zombie
Cpu(s):  1.4%us,  0.4%sy,  0.0%ni, 97.6%id,  0.5%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    508132k total,   162428k used,   345704k free,    28340k buffers
Swap:   916476k total,    21800k used,   894676k free, …
Run Code Online (Sandbox Code Playgroud)

linux jmeter top apache-2.2

4
推荐指数
1
解决办法
956
查看次数

如何让 /proc/[pid]/cmdline 包含命令参数?

我遇到了一个问题,我的一些 Ubuntu/Debian 服务器没有显示在 top 或 ps 中传递给 rake 的参数。我已经将这个问题追溯到 /proc/[pid]/cmdline 给出的输出变化。这个文件似乎控制了 ps 和 top 显示的内容。在正确显示参数的服务器上,cmdline 文件的内容类似于:

ruby^@/home/user/.rvm/gems/ree-1.8.7-2011.03/bin/rake^@log_file_tailer:run^@
Run Code Online (Sandbox Code Playgroud)

但是,在不显示 rake 参数的服务器上,cmdline 的输出看起来像

/home/user/.rvm/gems/ree-1.8.7-2011.03/bin/rake^@                                                                                                        ^@^@^@^@^@
Run Code Online (Sandbox Code Playgroud)

也就是说,文件的内容有两行长,但不包含任何有关传递给 rake 的参数的信息。

FWIW,我拥有的两台服务器以不太有用的格式(缺少参数的格式)输出 cmdline 正在运行

Linux 版本 2.6.32-5-amd64(Debian 2.6.32-46)(dannf@debian.org)(gcc 版本 4.3.5(Debian 4.3.5-4))#1 SMP Sun Sep 23 10:07:46 UTC 2012

Linux 版本 3.2.0-23-generic(buildd@crested)(gcc 版本 4.6.3(Ubuntu/Linaro 4.6.3-1ubuntu4))#36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012

有趣的是,对于我看到的除 rake 之外的大多数命令,这些服务器似乎确实正确显示了完整的命令行,包括参数。

有谁知道如何获得完整的命令行(包括参数)以输出到这些服务器上的 cmdline?我非常希望这不需要对内核进行完整的重新编译(我对此几乎没有经验)。

-- 编辑 -- 据推测是 soley rake 负责设置 /proc/[pid]/cmdline 的内容,但这与我们运行相同版本的 rake 的事实不符( 0.8.7) 在提供和不提供由 rake 调用的命令行参数的服务器上。

ubuntu debian top process ps

4
推荐指数
1
解决办法
1696
查看次数

测量负载 - 顶部的 %CPU 与 %us 不同

当我在远程服务器上运行 TOP 时,我看到系统利用率非常低 (3.8%us)。但是,对于实际过程,我看到了 29.6% 的 CPU。

由于这台服务器有8个CPU核心,%CPU是不是只有1个CPU的利用率,而us上面却超过了8个CPU?

当我将 29.6 除以 8 时,我得到 3.7,这似乎验证了我的猜测。所以问题:

  • 我看到的低利用率实际上是超过 8 个 CPU,而 %CPU 用于进程正在使用的 CPU?
  • 使用多个 CPU 的进程会发生什么情况?
  • 如果需要,tomcat 是否使用多个 CPU?或者如果负载增加,tomcat会崩溃但我们永远不会被告知高负载

最高输出

    top - 12:17:40 up 9 days, 21:51,  2 users,  load average: 0.32, 0.28, 0.27
    Tasks: 201 total,   2 running, 199 sleeping,   0 stopped,   0 zombie
    Cpu(s):  3.8%us,  0.1%sy,  0.0%ni, 96.1%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
    Mem:  16229072k total,  5617572k used, 10611500k free,   156480k buffers
    Swap:  8388588k total,        0k used,  8388588k free, …
Run Code Online (Sandbox Code Playgroud)

tomcat central-processing-unit top

4
推荐指数
1
解决办法
1292
查看次数

top 命令 - 来自进程的 CPU 不加起来

我了解top命令(6.5%us17.2%sy0.0%ni等...)报告的各种类型的 CPU 使用率,但为什么每个进程的总 CPU 百分比加起来不等于任何Cpu(s)值?例如,下面的 java 进程消耗了 77.5% 的 CPU,但Cpu(s)说 76.0% 仍然处于空闲状态。为什么是这样?这是在单核系统上。

top - 05:53:27 up 32 min,  2 users,  load average: 0.16, 0.29, 0.34
Tasks:  71 total,   1 running,  70 sleeping,   0 stopped,   0 zombie
Cpu(s):  6.5%us, 17.2%sy,  0.0%ni, 76.0%id,  0.0%wa,  0.0%hi,  0.3%si,  0.0%st
Mem:   1758616k total,   643432k used,  1115184k free,    12224k buffers
Swap:   917500k total,        0k used,   917500k free,   304608k cached

  PID USER      PR  NI  VIRT …
Run Code Online (Sandbox Code Playgroud)

linux top cpu-usage

4
推荐指数
2
解决办法
6529
查看次数

free 显示使用的内存多于顶级进程总数

更新:

这是由于 nss-softkn 的一个已知问题引起的。见这篇文章:https : //www.splyt.com/blog/2014-05-16-optimizing-aws-nss-softoken


当我从我的 centos 6.5 机器上运行 free -m 时,我看到我只有大约 1400 mb 的可用内存,包括缓存。当我做 top 时,按内存排序并加起来我只看到大约 1600 个正在使用的进程。我应该有更多的空闲内存。这发生在我们的几个盒子上。

[root@db1 ~]# free -m
              total      used       free     shared    buffers     cached
Mem:          7840       7793         47          0        287       1357
-/+ buffers/cache:       6148       1692
Swap:         7983          7       7976
Run Code Online (Sandbox Code Playgroud)

最高输出

在此处输入图片说明

这是可视化进程消耗的内存的更好方法:

在此处输入图片说明

linux memory top memory-usage centos6

4
推荐指数
1
解决办法
2万
查看次数

在进程列表中识别 Docker 内部运行的进程

我意识到在 Docker 容器内运行的进程出现在主机的进程列表中:

# ps aux | grep mariadb
root     12486  0.0  0.0 112812   976 pts/0    S+   14:47   0:00 grep --color=auto mariadb
Run Code Online (Sandbox Code Playgroud)

有没有办法识别进程是在主机上运行还是在 Docker 容器上运行,或者有办法过滤掉 Docker 进程?

centos top ps docker centos7

4
推荐指数
1
解决办法
1万
查看次数