AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 38756
In Process
Kamil Kisiel
Kamil Kisiel
Asked: 2009-07-10 19:33:37 +0800 CST2009-07-10 19:33:37 +0800 CST 2009-07-10 19:33:37 +0800 CST

分析 Linux NFS 服务器性能

  • 772

我想对我们的 NFS 服务器进行一些分析,以帮助追踪我们应用程序中的潜在瓶颈。服务器正在运行 SUSE Enterprise Linux 10。

我想知道的事情是:

  • 哪些客户端正在访问哪些文件
  • 每个客户端的读/写吞吐量
  • 其他 RPC 调用带来的开销
  • 等待其他 NFS 请求或磁盘 I/O 以服务客户端所花费的时间

我已经知道可用的统计数据/proc/net/rpc/nfsd,事实上我写了一篇博客文章深入描述了它们。我正在寻找的是一种更深入地挖掘并帮助了解哪些因素会影响特定客户所看到的性能的方法。我想分析 NFS 服务器在我们集群上的应用程序性能中所起的作用,以便我能想出最佳优化它的方法。

performance linux nfs
  • 8 8 个回答
  • 20996 Views

8 个回答

  • Voted
  1. ko-dos
    2009-07-11T05:08:00+08:002009-07-11T05:08:00+08:00

    只是一个想法,尝试使用wireshark 嗅探nfs 流量。可能会告诉您哪个用户访问了哪个文件:

    tshark -R nfs -i eth0
    
    • 2
  2. knweiss
    2009-07-12T02:27:05+08:002009-07-12T02:27:05+08:00

    collectl(尤其是它的NFS 子系统)是一个非常好的实用程序,它可能对您的分析有用,但它与您的需求列表不匹配。我不知道有任何 Linux 实用程序可以这样做。

    (请让我添加此题外话:有符合您要求的软件:Sun 的基于 DTrace 的分析 (pdf) - 但不幸的是在 Linux 上不可用。您会在Brendan Gregg 的博客中找到很多很好的示例来说明此工具的功能。)

    • 2
  3. Mark Seger
    2009-07-14T02:41:38+08:002009-07-14T02:41:38+08:00

    我不得不说,在可供一个人使用的所有不同的 *stat 实用程序中,nfsstat 是迄今为止最糟糕的!它使您能够查看一堆计数器,仅此而已。如果您查看它们两次,您必须尝试找出每个计数器更改了多少,如果您想知道更改率,则需要除以样本之间的秒数。平心而论,nfsstat 确实可以追溯到很多年前,当时事情仍然很粗糙,现在由于没有人想要更改输出格式而受到阻碍,因为它可能会破坏很多东西。

    至于使用 collectl 监控 nfs,它确实以更易于阅读的格式提供 nfsstat 输出,但更好的是,您可以让它运行数小时或数天,并在后台播放您收集的数据。至于查看进程在做什么的请求,collectl 还可以收集进程数据,包括每个进程正在执行多少 I/O,甚至可以回放显示顶级 I/O 用户。您还可以实时使用顶级功能。

    如果您想观看磁盘主题,collectl 也可以这样做,并以协调的方式显示所有内容。

    看看... - 标记

    • 2
  4. wazoox
    2009-07-11T02:21:18+08:002009-07-11T02:21:18+08:00

    目前我没有更好的答案,但是您可以非常精确地跟踪磁盘 IO

    iostat -mx <delay in sec.> <devices>
    

    它提供了非常有用的数据,尤其是 IO 的平均队列大小和等待时间(以毫秒为单位)。它很容易显示您的磁盘是否是瓶颈,以及瓶颈是 IO 计数还是吞吐量。

    然后与

    netstat -plaute | grep nfs
    

    您将实时看到客户端连接和从每个客户端传输的字节。循环它以获得连续数据。制作一个提供连续数据的脚本会很容易......我正在努力:)

    现在要获得每个进程的 IO,您可以使用出色的iotop。不过,您仍然必须找到一种方法来将 nfsd 进程与客户端匹配。

    至于哪个客户端正在访问哪些文件,我被卡住了。实际上,当前从 NFS 客户端读取/写入的文件甚至不会出现在 lsof 输出中。

    只是为了扩展 netstat,使用 watch -d 查看事情如何变化并按主机排序

    watch -d "netstat -plaute | grep nfs | sort -k 4,5"
    
    • 1
  5. w00t
    2009-07-13T13:56:40+08:002009-07-13T13:56:40+08:00

    查看 nfsstat。它没有显示您想要的所有内容,但至少显示了一个很好的子集。

    http://linux.die.net/man/8/nfsstat

    • 1
  6. user41794
    2010-11-15T04:07:05+08:002010-11-15T04:07:05+08:00

    在我看来,这恰恰突出了当今工具的问题。这里我们至少提到了 3 个,包括 nfsstat、iostat 和 iotop。然后顺便提到了wireshare和nfsreplay。这听起来真的是一种正常的做事方式吗?除了wireshark 之外,它本身就是一个类别,您不喜欢1 个工具吗?

    对于开场白,虽然我发现 iostat 的输出非常有用,但数字中的所有 .00 都很难阅读。Collectl 报告完全相同的数据,但格式更容易让人眼前一亮。您已经知道我对 nfsstat 的看法,并且由于 collectl 可以回放任何数据,因此不需要“重播”实用程序。至于 'iotop',collect 还可以显示按包括 I/O 在内的任何内容排序的进程。

    因此,您也拥有所有内容,并带有时间戳。如果您需要更精细的监控间隔,您始终可以将采样时间调回到 0.1 或 0.5 秒或介于两者之间的任何时间,尽管如果您以如此快的速度监控进程,则会产生更多开销,但使用任何进程监控实用程序都会产生更多开销。

    最后的好处是您使用 collectl 收集的任何内容,您可以将其加载到电子表格中并轻松绘制或使用 colplot,它是 collectl-utils 的一部分。

    -标记

    • 1
  7. Philip Durbin
    2012-10-27T12:24:15+08:002012-10-27T12:24:15+08:00

    nfswatch您可能想从http://nfswatch.sourceforge.net尝试

    您可以在http://prefetch.net/blog/index.php/2009/06/16/monitoring-nfs-operations-with-nfswatch/看到一些示例输出

    nfswatch有点像top(虽然我不确定是否有批处理模式)。一旦它运行,您可以通过点击一个键来更改显示(例如“c”以显示使用您的 NFS 服务器的 NFS 客户端)。

    然而,在我的简短测试中,nfswatch似乎不适用于 NFSv4。

    • 1
  8. Nick Anderson
    2009-07-12T22:27:39+08:002009-07-12T22:27:39+08:00

    您可能想查看 nfsreplay。它可能会帮助您弄清楚发生了什么。此外,您可能会发现此处的信息和链接很有用

    • 0

相关问题

  • 上线的第一天:如何不杀死您的网站

  • IIS 优化

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve