PowerScale OneFS:对性能问题进行故障排除
Summary: 提供有关网络配置、处理负载和使用 InsightIQ 进行监视以提高群集效率的综合指南,对 PowerScale OneFS 性能缓慢问题进行故障处理。
Symptoms
客户端计算机运行缓慢。特定作业(尤其是在群集上运行的作业)失败或花费的时间比预期更长。
Cause
性能问题通常是由于网络流量、网络配置问题、客户端或群集处理负载或这些因素的组合造成的。本文介绍了对性能问题进行故障处理的几种有效方法。
Resolution
使用 InsightIQ 进行故障处理
目录:
- 使用 Isilon InsightIQ
- 不使用 InsightIQ 的故障处理
- 网络吞吐量
- 客户端连接的分布
- 群集吞吐量
- 群集处理
- 排队操作
- CPU
使用 Isilon InsightIQ
使用 Isilon InsightIQ 是监视性能和对性能问题进行故障处理的最佳方式。
借助 Isilon InsightIQ 虚拟设备,您可以通过基于 Web 的 InsightIQ 应用程序中灵活、可自定义的图表视图来监视和分析 Isilon 群集活动。这些图表提供有关群集硬件、软件以及文件系统和协议操作的详细信息。InsightIQ 将数据转换为可视化信息,强调任何性能异常值,从而实现对瓶颈的快速诊断或优化工作流。
有关使用 InsightIQ 的详细信息,请参阅 PowerScale InsightIQ — 信息中心。
不使用 InsightIQ 的故障处理
如果不使用 InsightIQ,则可以运行各种命令来调查性能问题。要对性能问题进行故障处理,您可以首先检查网络和群集吞吐量,然后检查群集处理,最后检查单个节点 CPU 速率。
网络吞吐量
使用网络测试工具,例如 Iperf 或 Iperf3 确定群集和网络上客户端计算机的吞吐量功能。
使用 Iperf,在群集和客户端上运行以下命令。这些命令会定义一个足够大的窗口大小,以查明网络链路是否是延迟问题的潜在原因。
- 集群:
iperf -s -w 262144 - 客户端:
iperf -c <cluster IP> -w 262144
使用 Iperf3,在群集和客户端上运行以下命令。这些命令会定义一个足够大的窗口大小,以查明网络链路是否是延迟问题的潜在原因。
- 集群:
iperf3 -s -w 262144 客户端:iperf3 -c <cluster IP> -w 262144
客户端连接的分布
检查连接到群集的网络文件系统 (NFS) 和服务器消息块 (SMB) 客户端的数量,以确保它们不会偏向于一个节点。
- 在群集中的任意节点上打开 SSH 连接,然后使用
root帐户。 - 运行
isi statistics query current list --nodes=all --keys=node.clientstats.connected.nfs,node.clientstats.active.nfs -d命令检查 NFS 客户端。
输出会显示每个节点连接的客户端数量,以及每个节点上处于活动状态的客户端数量。 - 运行
isi statistics query current list --keys=node.clientstats.connected.smb,node.clientstats.active.smb1,node.clientstats.active.smb2 -n all -d用于检查 SMB 客户端的命令。
输出会显示每个节点连接的客户端数量,以及每个节点上处于活动状态的客户端数量。
群集吞吐量
通过执行写入和读取测试来评估群集吞吐量,这些测试可测量读取和写入文件所需的时间量。执行至少一次写入测试和一次读取测试,如下所示。
编写测试。
- 在群集中的任意节点上打开 SSH 连接,然后使用
root帐户。 - 更改为
/ifs目录:cd /ifs - 从群集上的命令行界面 (CLI) 或者从 UNIX 或 Linux 客户端计算机,使用
dd命令将新文件写入群集。
运行以下命令:dd if=/dev/zero of=1GBfile bs=1024k count=1024
此命令创建一个示例 1GB 文件,并报告将其写入磁盘所花费的时间量。 - 从此命令的输出中,推断在单流工作流中每秒可以写入磁盘的 MB 数。
- 如果您有 MAC 客户端并希望进行进一步分析,
- 启动活动监视器。
- 运行
cat /dev/zero > /pathToFile命令,其中pathToFile是目标文件的文件路径。
此命令可帮助测量 Isilon 群集上写入操作的吞吐量。(虽然可以从 Mac 客户端运行dd命令,结果可能不一致。) - 在活动监视器的 Network 选项卡中监视命令的结果。
阅读测试。
测量读取操作的吞吐量时,请确保不要对在写入测试期间创建的文件执行读取测试。由于该文件已被缓存,因此读取测试的结果将不准确。请测试尚未缓存的文件的读取操作。在群集上查找大于 1GB 的文件,并在读取测试中引用该文件。
- 在群集中的任意节点上打开 SSH 连接,然后使用
root帐户。 - 从群集上的 CLI 或从 UNIX 或 Linux 客户端计算机中,使用
dd命令读取群集上的文件。
运行dd if=/pathToLargeFile of=/dev/null bs=1024k命令,其中pathToFile是目标文件的文件路径。
此命令读取目标文件并报告读取它所花费的时间量。 - 如果您有 MAC 客户端并希望进行进一步分析,
- 启动活动监视器。
- 运行
time cp /pathToLargeFile > /dev/null命令,其中pathToFile是目标文件的文件路径。
此命令可帮助测量 Isilon 群集上读取操作的吞吐量。(虽然可以从 Mac 客户端运行dd命令,结果可能不一致。) - 在活动监视器的 Network 选项卡中监视命令的结果。
群集处理
重新条带化作业。
检查群集的输入/输出 (I/O) 操作 (IOPS) 之前:
- 确定群集上正在运行的作业。如果重新条带化作业(如自动平衡、收集或 MultiScan)正在运行,请考虑这些作业运行的原因以及它们是否应继续运行。
- 考虑正在使用的数据类型。如果客户端计算机正在处理大型视频文件或虚拟机 (VM),则重新条带化的作业需要比正常情况更高的磁盘 IOPS 量。
- 考虑暂时停止重新条带化作业。这样做可以提高性能,并且可能是解决性能问题的可行短期解决方案。
磁盘 I/O
检查磁盘 I/O 可帮助确定某些磁盘是否被过度使用。
按群集
- 在群集中的任意节点上打开 SSH 连接,并使用“root”帐户登录。
- 运行
isi statistics pstat用于确定磁盘 I/O 的命令。 从此命令的输出中,将磁盘 IOPS 除以群集中的磁盘总数。例如,对于使用 Isilon IQ 12000x 节点的 8 节点群集(每个节点托管 12 个驱动器),您将磁盘 IOPS 除以 96。
对于 X 系列节点和 NL 系列节点,对于 100% 随机工作流,您应该会看到磁盘 IOPS 为 70 或更低,对于 100% 顺序工作流,应该会看到磁盘 IOPS 为 140 或更低。由于 NL 系列节点的 RAM 和 CPU 速度低于 X 系列节点,因此 X 系列节点可以处理更高的磁盘 IOPS。
按节点和按磁盘
- 在群集中的任意节点上打开 SSH 连接,并使用“root”帐户登录。
- 运行
isi statistics query current --nodes=all --stats=node.disk.xfers.rate.sum --format=top按节点确定磁盘 IOPS 的命令,这有助于发现过度使用的磁盘。 - 运行
isi_stats_tool -a get_key_info|grep node.disk.xfer用于确定如何按磁盘查询统计信息的命令。
排队操作
确定磁盘是否过度使用的另一种方法是确定群集中每个磁盘的排队操作数量。对于基于 SMB 的单个流工作流,队列为 4 可能表示存在问题,而对于高并发 NFS 命名空间操作,队列更大。
- 在群集中的任意节点上打开 SSH 连接,然后使用
root帐户。 - 运行
isi statistics drive list --nodes=all --sort=queued -d用于确定群集中每个磁盘的排队操作数量的命令。 - 确定操作在队列中持续了多长时间:
isi statistics drive list --nodes=all --sort=queued -d
CPU
CPU 问题通常可以追溯到客户端在群集上执行的操作。通过使用 isi statistics 命令,您可以确定在群集上执行的操作,按网络协议或客户端计算机编目。
- 在群集中的任意节点上打开 SSH 连接,然后使用
root帐户。 - 运行
isi statistics protocol list --long --totalby Op,proto -d --sort TimeAvg --format top命令来确定正在网络中执行哪些操作,并评估哪些操作花费的时间最长。
此命令输出提供所有网络协议的详细统计信息,并按群集响应客户端所需的时长进行组织。虽然此命令的结果可能无法确定哪个操作最慢,但它可以为您指明正确的方向。 - 运行
isi statistics system --nodes all --format top命令以获取有关 CPU 处理的更多信息,例如哪些节点的 CPU 使用率最高。 - 运行
isi_for_array -sX 'top -u -n |grep PID -A4'命令以获取每个节点上消耗最多 CPU 资源的四个进程。
Additional Information
以下是可能您感兴趣的与此主题相关的推荐资源: