我在云 VPS (Xen) 上运行 Debian Lenny (x86_64),top命令告诉我有 210 个进程正在运行,209 个进程正在休眠:
top - 14:49:29 up 15:18, 1 user, load average: 0.09, 0.11, 0.05
Tasks: 210 total, 1 running, 209 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 532288k total, 437316k used, 94972k free, 30584k buffers
Swap: 1048568k total, 408k used, 1048160k free, 219772k cached
Run Code Online (Sandbox Code Playgroud)
这是ps aux命令给我的:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 …Run Code Online (Sandbox Code Playgroud) 我使用 Ubuntu 8.04、Nginx、Passenger、Mysql、RVM 在 VPS 上托管了几个 Rails 应用程序,所以所有常见的嫌疑人。
在过去的日子里,这是我第一次真正必须调试问题并查看正在运行的进程。我可以使用passenger-status 和passenger-memory-stats 来解决这个问题,但是我对正在运行的进程数量感到很困惑,无法弄清楚。
看看这个截图,例如:http : //screencast.com/t/wUMrmy5iQPQi(取自 htop)
它显示了许多 Hudson 进程(Hudson 是我在那台机器上运行的 CI 服务器)。
我的问题是:
我有一个英特尔 E5620 处理器。我已经用来cat /proc/[pid]/stat确定进程上次运行在哪个处理器上(第 39 个字段)。我如何确保一个进程专用于处理器(我有 8 个可用)或者更好,我如何才能将一个进程专用于一个核心(我有 4 个)?
给定在 Linux(最新内核)中运行的进程的 PID,我如何找出:
这是针对 x86-64 架构的。
感谢您花时间检查我的问题。
我目前正在处理一个以前只出现过一次的问题。回到 1 月 3 日,当它第一次出现时,我们能够重新启动服务器,一切似乎都很好,但现在又回来了。这是一个生产数据库系统,因此有时很难找到重新启动的窗口。我希望在我们几天后再次重新启动以提供另一个临时解决方案之前,能够牢牢掌握这次可能发生的实际情况。开始了...
相关系统的用户身份验证通过 Red Hat Directory Server 9 使用 LDAP 处理。下面描述的问题仅在这台服务器上出现,即使是共享数据库的对应服务器也不会显示相同的症状。截至目前,没有任何 LDAP 帐户能够进行身份验证并登录到服务器。LDAP 身份验证正在由 SSSD 处理,目前无法停止或重新启动。尝试执行任一操作时,SSH 控制台都没有响应。(ctrl-c 无法退出发出的命令)
PS 显示通常的 sssd 相关进程正在运行,但kill -9对它们的尝试似乎并没有成功阻止它们中的任何一个。
ps aux | grep sss | grep -v grep
root 1150 0.0 0.0 150828 2908 ? D 09:05 0:00 /usr/libexec/sssd/sssd_nss -d 0 --debug-to-files
root 7025 0.0 0.0 93616 2504 pts/2 D 16:18 0:00 /usr/sbin/sssd -f -D
root 11148 0.0 0.0 179436 5672 ? D Jan08 16:22 /usr/libexec/sssd/sssd_be -d 0 --debug-to-files --domain …Run Code Online (Sandbox Code Playgroud) 我知道如果一个进程进入D状态则意味着它处于不可中断状态。该进程不能被任何信号杀死。它只会在重新启动或 I/O 等待结束时退出该状态。
我有很多进程处于D状态,这表明我的机器有问题。即使重新启动后,它们也会回到D状态。我在网上搜索并发现wchanps 输出中的部分告诉我的进程正在等待内核中的什么内容。
当我使用这个命令时,ps axl| grep D我进入-了 wchan 专栏,并且网上没有解释这是什么意思。
这是我的上述命令的示例输出。
0 0 69970 1 20 0 25064 1088 - D ? 0:00 ls -l
Run Code Online (Sandbox Code Playgroud)
我无法理解-上面输出的含义。
我试图确定是否可以通过特定接口有选择地从进程或进程组路由 IP 数据包,而所有其他数据包都通过另一个接口路由。也就是说,我希望所有流量/usr/bin/testapp都通过,eth1而所有其他数据包通过eth0。这种情况下的数据包可以是 TCP、UDP、ICMP 等,并且可以由最终用户配置为使用各种端口。
因为我无法轻松地强制相关进程绑定到特定接口,所以我试图通过路由实现相同的结果。这可能吗?
- - 编辑 - -
通过这里和其他许多地方的一个有用建议,是基于 UID 标记数据包;这并不是真正的目标。目标是基于 process 标记/过滤/路由,而不管 user。也就是说,如果说了,alice,bob和charlie所有运行自己的实例/usr/bin/testapp; 来自所有三个实例的所有数据包都应该通过,eth1而来自系统的所有其他数据包都应该通过eth0。
请注意,通过源/目标端口、用户名/UID 等进行标记是不够的,因为不同的用户可能会运行testapp并且他们可能会自行设置不同的端口~/.config/testapp.conf或其他任何内容。问题是关于按流程过滤。
一个可用的选项,尽管我不知道它有多大帮助,是/bin/(ba|z)?sh在本机二进制文件周围使用基于 -based 的包装器。
- - 编辑 - -
我指的是在运行现代 Linux 内核(例如 4.0 或更高版本)的系统上进行路由。如果有软件依赖性超越iproute2,nftables,conntrack和类似的工具,我愿意探索开源解决方案,但基本工具是优选的。
我被要求调查今天早上发生的高 CPU 使用率警报。我使用sar -p并看到当时出现的高CPU使用率
接下来我曾经ps -eo pcpu,pid,user,args | sort -r -k1 | less列出了这个时间前 10 名的内存猪
现在我如何找出早上那个特定时间导致瓶颈的进程。我是一名 Java 开发人员,而不是 Linux 专家。
甚至有可能吗?
我在 Intel Core Duo 2GHz 上安装了 Windows XP SP3。根据 Process Explorer 的说法,“中断”进程持续占用 30-40% 的 CPU。正常吗?
在我的 Ubuntu 服务器上,我使用God来监控一些 Ruby 进程/脚本,包括一个队列系统。
上帝会自动检查我的进程之一何时存在并重新启动它。它还跟踪内存使用情况,并在触发特定条件时正确操作。今天我重新启动了服务器,过了一会儿我发现我的队列不起作用。快速检查后,我发现服务器重启后上帝没有重启(我认为应该)。
确保上帝(或通用进程)在服务器重新启动时或进程因任何原因被终止时自动重新启动的最佳方法是什么?
我用来启动 God 的具体命令是
god -c config
Run Code Online (Sandbox Code Playgroud)