有人可以解释一下这个顶级输出吗?每个 PHP 进程使用的是总内存的 30% 还是已用内存的 30%?此外,所有 PHP 进程的总使用内存怎么会远远超过我的系统内存?这是共享内存吗?
提前致谢
top - 14:15:34 up 2 days, 12:38, 1 user, load average: 0.97, 1.03, 0.93
Tasks: 124 total, 1 running, 123 sleeping, 0 stopped, 0 zombie
Cpu(s): 4.9%us, 0.3%sy, 0.0%ni, 94.6%id, 0.0%wa, 0.0%hi, 0.1%si, 0.1%st
Mem: 1029508k total, 992140k used, 37368k free, 150404k buffers
Swap: 262136k total, 2428k used, 259708k free, 551500k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6695 www-data 20 0 548m 307m 292m …Run Code Online (Sandbox Code Playgroud) 使用 ps,我可以看到大小、vsize(与 top 的 VIRT 相同?)和 rss(与 top 的 RES 相同?)。(我在上面看到的另一个是 SHR。)
有人可以为我总结这些不同领域的含义吗?
目前我们的服务器存在一些问题,间歇性地,我们似乎得到了 apache 进程,这些进程只是运行和运行,占用 100% 的 CPU。
运行 top 时,我们看到以下内容:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
20788 www-data 20 0 318m 18m 3984 R 100 0.0 40:29.21 /usr/sbin/apache2 -k start
23523 www-data 20 0 319m 20m 4684 R 100 0.0 4:12.36 /usr/sbin/apache2 -k start
Run Code Online (Sandbox Code Playgroud)
我想尝试找出导致这种情况的脚本(或任何脚本),所以我尝试了:
strace -p 20788
Run Code Online (Sandbox Code Playgroud)
但这根本没有显示任何输出(我已经离开了大约 10 分钟,它什么也没显示)。根据我的理解,这可能意味着它陷入了无限循环,并且没有任何“系统调用”可以显示。
我还能做些什么来显示正在发生的事情吗?
谢谢
编辑 -忘了说,这是一个随时都有几百个用户的实时服务器!所以我真的不能随意尝试更改配置选项并重新启动 apache。
编辑 2 - 当 PHP 未配置 --enable-debug 时,来自 gdb 的回溯 (bt) 似乎并不是那么有用 - 它只显示“execute()”,但我需要知道 PHP 脚本是什么实际运行..还有其他方法吗?
#0 0x00007f6c143fb0c5 …Run Code Online (Sandbox Code Playgroud) 红帽EL5
我按照我喜欢的方式配置了我的顶部,以 MB 为单位显示内存摘要和交换摘要。我不得不关闭我的外壳,然后当我重新打开它时,它又以(默认?)千字节显示。
我已经搜索了 google 和 top help 并管理了页面。我似乎无法在 MB 选项中找到显示。虽然,我确实发现了许多其他有些奇怪的选择......
如果有人知道我肯定会很感激。
谢谢!
我有运行liquidsoap+icecast 包和简单网站(httpd+mysqld)的服务器。没什么特别的。每天约有 2000 多名访客,平均约有 50 人同时在线。
服务器有 8GB 内存。随着时间的流逝,可用内存量不断减少,尽管服务器上没有启动任何新内容并且没有新用户。在某些时候它开始交换,服务器上的负载上升并且变得无响应。通常我所做的只是重新启动服务器......
可以做些什么来检测究竟是什么泄漏了内存?我使用 top 来监控资源的使用情况,但据我所知,它没有任何帮助:

有没有办法找出使用那么多内存的东西?或者什么开始大量交换到磁盘?有什么方法可以在不重新启动服务器的情况下释放内存?
这是我的free和smem输出:
danslimmon@bad-server:~$ free -m
total used free shared buffers cached
Mem: 30147 29928 218 6 4 3086
-/+ buffers/cache: 26837 3309
Swap: 0 0 0
danslimmon@bad-server:~$ smem -tw
Area Used Cache Noncache
firmware/hardware 0 0 0
kernel image 0 0 0
kernel dynamic memory 12857576 2887440 9970136
userspace memory 17661400 1272468 16388932
free memory 351592 351592 0
----------------------------------------------------------
30870568 4511500 26359068
Run Code Online (Sandbox Code Playgroud)
这是我的top输出的头部,按 RSS 排序:
top - 15:51:13 up 248 days, 14:20, 1 user, load …Run Code Online (Sandbox Code Playgroud) 在top屏幕中,默认情况下它会显示所有用户的进程。如何从顶部实时屏幕中排除某些用户(例如,root 和 nobody)?
许多Linux中的常用工具可能来自包装在UTIL-Linux的Linux基金会或的coreutils从GNU。top的手册页没有指定任何内容。
我正在使用 CentOS。
我们有一台负载异常高且 CPU 利用率异常高的服务器,但我们不知道为什么。当我们运行 top 时,所有的 proc 似乎都是非常低的 CPU。
http://cl.ly/2d1g0K3q261r0R0K3e35
有没有更好的方法来寻找导致这种情况的原因?
我在执行 cron 进程以检查服务器中当前的 CPU 使用情况时遇到问题。
我的脚本开始于:
top -c -n 1 -u www-data > /tmp/kill-cpu
Run Code Online (Sandbox Code Playgroud)
我可以在控制台中毫无问题地执行,但在 cron 中我得到
顶部:tty 获取失败
如果我使用 -b 选项到顶部
top -b -n 1
Run Code Online (Sandbox Code Playgroud)
我得到
'dumb':未知终端类型。
我使用 xterm 作为 TERM
感谢您的帮助 :)
Lito。
解决方案:我能够通过以下方式解决问题:
ln -s /lib/terminfo/d/dumb /usr/share/terminfo/d/dumb
Run Code Online (Sandbox Code Playgroud) top ×10
linux ×8
memory ×3
memory-usage ×2
apache-2.2 ×1
centos ×1
cron ×1
memory-leak ×1
php ×1
ps ×1
redhat ×1
resources ×1
strace ×1
term ×1
ubuntu-12.04 ×1
users ×1
xterm ×1