适用于: Linux 中的 .NET
本文介绍如何使用 top
命令行 htop
工具来监视进程。
先决条件
与前面的部分一样,本部分的结构更加强调开始故障排除时要遵循的理论和主体。 它没有任何先决条件。 但是,如果已按照此培训的所有步骤操作,则应已设置以下各项:
- Nginx 有两个网站:
- 第一个网站使用 myfirstwebsite 主机标头(
http://myfirstwebsite
)侦听请求,并将请求路由到正在侦听端口 5000 的演示 ASP.NET Core 应用程序。 - 第二个网站使用 buggyamb (
http://buggyamb
) 主机标头侦听请求,并将请求路由到正在侦听端口 5001 的第二个 ASP.NET Core 示例 buggy 应用程序。
- 第一个网站使用 myfirstwebsite 主机标头(
- ASP.NET Core 应用程序都作为服务运行,这些服务在重新启动服务器时自动重启,或者应用程序停止响应或失败。
- Linux 本地防火墙已启用并配置为允许 SSH 和 HTTP 流量。
本部分的目标
排查性能问题时,可能需要监视进程的 CPU 和内存使用情况,以了解其资源消耗随时间的变化。 在 Windows 中,可以使用任务管理器执行此操作。 Linux 有几个工具旨在实现相同的目标。
此部分将检查top
htop
用于监视进程的命令行工具和命令行工具。
返回页首
若要在 Linux 中打开等效的任务管理器,请 top
运行该命令。
在此示例中,可以在 PID 19933 的第一个列出的进程中观察到进程显示 CPU 使用率高,内存使用率也很高。
选择和取消选择列
若要在工具提供的视图中 top
添加或删除列,请在运行该工具时选择 F 。 用星号标记的列是选择用于显示的列。 使用箭头键在可用列中移动,并使用空格键选择或取消选择列。
然后选择 Esc 退出。
这些更改将保存给用户帐户。 下次运行 top
时,你将看到所选列。
按用户筛选输出
为了能够面向有问题的资源消耗方案,请务必了解如何筛选 top
输出。 最常见的方法之一是按用户名筛选进程。 可以选择 U,然后键入用户名。 以下屏幕截图显示了 top
筛选 www-data 用户的可用进程快照的工具。
选择 Enter 时,会看到给定用户运行的进程(此示例中的 www-data 用户)。
检查筛选 top
视图的输出时,可以看到其中两个进程是 .NET 进程。 这两个进程运行两个 ASP.NET 核心应用程序,而其他两个进程属于 Nginx。
可以直接运行 top
命令时,可以使用筛选器。 例如,如果运行 top -u www-data
命令,它将生成与打开 top
该工具并选择 U 按用户筛选时得到的输出相同。
删除空闲进程
选择 “我 ”或运行 top -i
命令以筛选 top
输出,以仅显示消耗 CPU 的进程。 以下屏幕截图显示了命令的 top -i -u www-data
输出。 请注意,即使有四个进程是使用 www-data 用户帐户启动的,输出 top
也会隐藏空闲进程。 只有 PID=19933 的进程才会消耗 CPU。
再次选择 “我 ”切换开关并显示空闲进程。
终止进程
若要终止或终止进程,必须向进程发送终止信号。 你可能会记得我们之前使用了 sudo kill -9 <PID>
命令来终止进程。 还可以使用 top
终止进程。 选择 K 以在运行时终止进程 top
,然后键入要终止的进程的 PID。
选择 Enter 后, top
要求输入信号类型。 选择 “输入 一次”以发送“终止”信号(15/sigterm
)。
几秒钟后,你将看到列表中缺少 PID 122632的过程。 请记住,在列表中,“122632”进程对应于 BuggyAmb ASP.NET Core 应用程序。 由于它配置为自动启动,因此你将看到一个新的 .NET 进程在关闭后启动新的 PID。
htop
Htop 是一个进程查看器和文本模式应用程序,用于实时监视系统,类似于 top
。 它易于使用,它显示正在运行的进程的完整列表。
该工具 htop
在 Ubuntu Linux 的分发中预安装,用于安装本课程的虚拟服务器。 如果未 htop
在 Linux 发行版中安装,可以使用 Linux 中的包管理器来安装它。 (请参阅 第 1.3 部分 - 在 Linux 中安装 .NET 了解详细信息。
若要启动该工具,请运行 htop
命令。 你将看到类似于以下五颜六色的输出:
备注
底线指示可以使用的函数键。 选择 F6 以按不同的选项排序,使用箭头键选择 PERCENT_MEM
列,然后选择 Enter。 这会按内存使用情况对进程进行排序。
与 top
命令一样,可以对多个函数使用键盘快捷方式。 例如,选择 U 从列表中选择用户名。
但是,输出中有 htop
一些令人困惑的内容。 根据最后一个示例的输出,你应该会看到 www-data 用户的四个进程。 但是,我们看到还有更多条目。 导致此行为的原因是什么?
输出中的区别是 htop
默认显示进程及其线程。 除非想要查看线程,否则建议始终禁用线程视图以使输出更加清晰。 若要禁用线程视图并仅查看进程,请选择 Shift+H。 以下屏幕截图显示了没有线程的进程。
如果必须终止进程,请使用箭头键选择进程,选择 F9,然后选择 Enter 发送“终止”信号。
此简洁概述应允许你了解哪些进程在系统上运行和使用资源。 若要退出htop
,请选择 F10 或 Ctrl+C。
后续步骤
本系列的下一部分(第 3.3 部分 - 调试器、核心转储和收集核心转储)讨论调试器和转储文件。