排查nfs服务器性能问题的工具 查看nfs端口
liebian365 2024-11-09 13:43 27 浏览 0 评论
网络文件系统(NFS)允许计算机将磁盘分区挂载到远程计算机上,就好像它是本地磁盘一样。它允许在网络上快速无缝地共享文件。但是,由于NFS依赖于现有的网络基础结构,因此网络上的任何故障都可能影响连接的性能。多年来,我从服务器和客户端角度分析NFS性能的两个最重要的工具是nfsstat和nsfiostat。这两个工具是nfs-utils软件包的一部分,需要这样安装:
yum install -y nfs-utils
了解这些工具的输出可以帮助优化NFS性能。
nfsstat命令
该nfsstat命令显示有关NFS和内核的远程过程调用(RPC)接口的统计信息。
在NFS服务器上,运行以下命令:
nfsstat -s
输出应类似于以下内容:
Server rpc stats:
calls badcalls badclnt badauth xdrcall
438970136 1 1 0 0
Server nfs v2:
null getattr setattr root lookup readlink
1 100% 0 0% 0 0% 0 0% 0 0% 0 0%
read wrcache write create remove rename
0 0% 0 0% 0 0% 0 0% 0 0% 0 0%
link symlink mkdir rmdir readdir fsstat
0 0% 0 0% 0 0% 0 0% 0 0% 0 0%
Server nfs v4:
null compound
1 0% 438969430 99%
Server nfs v4 operations:
op0-unused op1-unused op2-future access close commit
0 0% 0 0% 0 0% 87650926 6% 73421989 5% 986 0%
create delegpurge delegreturn getattr getfh link
59 0% 0 0% 73258528 5% 427711771 33% 88614633 6% 0 0%
lock lockt locku lookup lookup_root nverify
0 0% 0 0% 0 0% 15204675 1% 0 0% 0 0%
open openattr open_conf open_dgrd putfh putpubfh
73423342 5% 0 0% 115992 0% 1 0% 437803654 33% 0 0%
putrootfh read readdir readlink remove rename
12 0% 5765797 0% 4180244 0% 0 0% 23 0% 0 0%
renew restorefh savefh secinfo setattr setcltid
1164165 0% 0 0% 0 0% 0 0% 992 0% 8 0%
setcltidconf verify write rellockowner bc_ctl bind_conn
8 0% 0 0% 55222 0% 0 0% 0 0% 0 0%
exchange_id create_ses destroy_ses free_stateid getdirdeleg getdevinfo
0 0% 0 0% 0 0% 0 0% 0 0% 0 0%
getdevlist layoutcommit layoutget layoutreturn secinfononam sequence
0 0% 0 0% 0 0% 0 0% 0 0% 0 0%
set_ssv test_stateid want_deleg destroy_clid reclaim_comp
0 0% 0 0% 0 0% 0 0% 0 0%
要检查的最重要字段是badcalls,它代表RPC层拒绝的呼叫总数。当badcalls大于0时,由于可能存在延迟,因此需要检查基础网络。同样,在设计网络时,将NFS服务器与NFS客户端放在同一子网中也很重要。
在NFS客户端上,运行以下命令:
nfsstat -c
输出应类似于以下内容:
Client rpc stats:
calls retrans authrefrsh
944418168 2 944457842
Client nfs v4:
null read write commit open open_conf
0 0% 68119135 7% 1428621 0% 98892 0% 141141820 14% 234194 0%
open_noat open_dgrd close setattr fsinfo renew
0 0% 47 0% 141139584 14% 3231 0% 20 0% 1031985 0%
setclntid confirm lock lockt locku access
5 0% 5 0% 0 0% 0 0% 0 0% 54060741 5%
getattr lookup lookup_root remove rename link
306476931 32% 48450839 5% 5 0% 0 0% 0 0% 0 0%
symlink create pathconf statfs readlink readdir
0 0% 7 0% 15 0% 8347883 0% 0 0% 34253853 3%
server_caps delegreturn getacl setacl fs_locations rel_lkowner
35 0% 139633938 14% 0 0% 0 0% 0 0% 0 0%
secinfo exchange_id create_ses destroy_ses sequence get_lease_t
0 0% 0 0% 0 0% 0 0% 0 0% 0 0%
reclaim_comp layoutget getdevinfo layoutcommit layoutreturn getdevlist
0 0% 0 0% 0 0% 0 0% 0 0% 0 0%
(null)
0 0%
从上面可以看出,客户端表现不错,因为它的重传请求相对较少。如果遇到过多的重传,则可能需要调整数据传输缓冲区的大小,该大小由mount命令选项rsize和所指定wsize。
您还可以通过在服务器和客户端上运行以下命令来检查丢弃的数据包:
nfsstat -o net
nfsiostat命令
该nfsiostat命令的工作方式与iostat命令相似,但是用于服务器上的NFS挂载点。它使用该文件/proc/self/mountstats作为输入,并提供有关系统上安装的NFS共享的输入/输出性能的信息。
nfsiostat与NFS服务器通信时,该命令在NFS客户端上用于检查其性能。
nfsiostat不带任何参数运行的输出应类似于以下内容:
192.168.201.166:/home/work/share/image/user mounted on /home/work/tomcat/image-85/apache-tomcat-7.0.84/webapps/image/user:
op/s rpc bklog
15.05 0.00
read: ops/s kB/s kB/op retrans avg RTT (ms) avg exe (ms)
1.085 63.604 58.605 0 (0.0%) 6.297 6.331
write: ops/s kB/s kB/op retrans avg RTT (ms) avg exe (ms)
0.023 7.150 314.123 0 (0.0%) 23.869 25.261
需要注意的最重要的统计数据是:
- retrans -这是重传的次数。
- avg RTT (ms) -这是从客户端内核发送RPC请求到收到回复之间的持续时间。
- avg exe (ms)-这是从NFS客户端发出RPC请求到其内核直到RPC请求完成为止的持续时间。这包括RTT。
avg RTT(ms)和retrans很高表示网络上的延迟很高。高延迟还会影响I / O性能,因为将会有很多超时。客户将变得迟钝并且难以与之合作。
在NFS服务器和NFS客户端之间始终保持专用网络以确保高吞吐量也很重要。
总结
使用NFSnfsstat和nfsiostat对NFS性能问题进行故障排除可以使您成为更有效率的系统管理员。花一些时间来学习和使用这些出色的NFS工具。
相关推荐
- go语言也可以做gui,go-fltk让你做出c++级别的桌面应用
-
大家都知道go语言生态并没有什么好的gui开发框架,“能用”的一个手就能数的清,好用的就更是少之又少。今天为大家推荐一个go的gui库go-fltk。它是通过cgo调用了c++的fltk库,性能非常高...
- 旧电脑的首选系统:TinyCore!体积小+精简+速度极快,你敢安装吗
-
这几天老毛桃整理了几个微型Linux发行版,准备分享给大家。要知道可供我们日常使用的Linux发行版有很多,但其中的一些发行版经常会被大家忽视。其实这些微型Linux发行版是一种非常强大的创新:在一台...
- codeblocks和VS2019下的fltk使用中文
-
在fltk中用中文有点问题。英文是这样。中文就成这个样子了。我查了查资料,说用UTF-8编码就行了。edit->Fileencoding->UTF-8然后保存文件。看下下边的编码指示确...
- FLTK(Fast Light Toolkit)一个轻量级的跨平台Python GUI库
-
FLTK(FastLightToolkit)是一个轻量级的跨平台GUI库,特别适用于开发需要快速、高效且简单界面的应用程序。本文将介绍Python中的FLTK库,包括其特性、应用场景以及如何通过代...
- 中科院开源 RISC-V 处理器“香山”流片,已成功运行 Linux
-
IT之家1月29日消息,去年6月份,中科院大学教授、中科院计算所研究员包云岗,发布了开源高性能RISC-V处理器核心——香山。近日,包云岗在社交平台晒出图片,香山芯片已流片,回片后...
- Linux 5.13内核有望合并对苹果M1处理器支持的初步代码
-
预计Linux5.13将初步支持苹果SiliconM1处理器,不过完整的支持工作可能还需要几年时间才能完全完成。虽然Linux已经可以在苹果SiliconM1上运行,但这需要通过一系列的补丁才能...
- Ubuntu系统下COM口测试教程(ubuntu port)
-
1、在待测试的板上下载minicom,下载minicom有两种方法:方法一:在Ubuntu软件中心里面搜索下载方法二:按“Ctrl+Alt+T”打开终端,打开终端后输入“sudosu”回车;在下...
- 湖北嵌入式软件工程师培训怎么选,让自己脱颖而出
-
很多年轻人毕业即失业、面试总是不如意、薪酬不满意、在家躺平。“就业难”该如何应对,参加培训是否能改变自己的职业走向,在湖北,有哪些嵌入式软件工程师培训怎么选值得推荐?粤嵌科技在嵌入式培训领域有十几年经...
- 新阁上位机开发---10年工程师的Modbus总结
-
前言我算了一下,今年是我跟Modbus相识的第10年,从最开始的简单应用到协议了解,从协议开发到协议讲解,这个陪伴了10年的协议,它一直没变,变的只是我对它的理解和认识。我一直认为Modbus协议的存...
- 创建你的第一个可运行的嵌入式Linux系统-5
-
@ZHangZMo在MicrochipBuildroot中配置QT5选择Graphic配置文件增加QT5的配置修改根文件系统支持QT5修改output/target/etc/profile配置文件...
- 如何在Linux下给zigbee CC2530实现上位机
-
0、前言网友提问如下:粉丝提问项目框架汇总下这个网友的问题,其实就是实现一个网关程序,内容分为几块:下位机,通过串口与上位机相连;下位机要能够接收上位机下发的命令,并解析这些命令;下位机能够根据这些命...
- Python实现串口助手 - 03串口功能实现
-
串口调试助手是最核心的当然是串口数据收发与显示的功能,pzh-py-com借助的是pySerial库实现串口收发功能,今天痞子衡为大家介绍pySerial是如何在pzh-py-com发挥功能的。一、...
- 为什么选择UART(串口)作为调试接口,而不是I2C、SPI等其他接口
-
UART(通用异步收发传输器)通常被选作调试接口有以下几个原因:简单性:协议简单:UART的协议非常简单,只需设置波特率、数据位、停止位和校验位就可以进行通信。相比之下,I2C和SPI需要处理更多的通...
- 同一个类,不同代码,Qt 串口类QSerialPort 与各种外设通讯处理
-
串口通讯在各种外设通讯中是常见接口,因为各种嵌入式CPU中串口标配,工业控制中如果不够还通过各种串口芯片进行扩展。比如spi接口的W25Q128FV.对于软件而言,因为驱动接口固定,软件也相对好写,因...
- 嵌入式linux为什么可以通过PC上的串口去执行命令?
-
1、uboot(负责初始化基本硬bai件,如串口,网卡,usb口等,然du后引导系统zhi运行)2、linux系统(真正的操作系统)3、你的应用程序(基于操作系统的软件应用)当你开发板上电时,u...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- go语言也可以做gui,go-fltk让你做出c++级别的桌面应用
- 旧电脑的首选系统:TinyCore!体积小+精简+速度极快,你敢安装吗
- codeblocks和VS2019下的fltk使用中文
- FLTK(Fast Light Toolkit)一个轻量级的跨平台Python GUI库
- 中科院开源 RISC-V 处理器“香山”流片,已成功运行 Linux
- Linux 5.13内核有望合并对苹果M1处理器支持的初步代码
- Ubuntu系统下COM口测试教程(ubuntu port)
- 湖北嵌入式软件工程师培训怎么选,让自己脱颖而出
- 新阁上位机开发---10年工程师的Modbus总结
- 创建你的第一个可运行的嵌入式Linux系统-5
- 标签列表
-
- wireshark怎么抓包 (75)
- qt sleep (64)
- cs1.6指令代码大全 (55)
- factory-method (60)
- sqlite3_bind_blob (52)
- hibernate update (63)
- c++ base64 (70)
- nc 命令 (52)
- wm_close (51)
- epollin (51)
- sqlca.sqlcode (57)
- lua ipairs (60)
- tv_usec (64)
- 命令行进入文件夹 (53)
- postgresql array (57)
- statfs函数 (57)
- .project文件 (54)
- lua require (56)
- for_each (67)
- c#工厂模式 (57)
- wxsqlite3 (66)
- dmesg -c (58)
- fopen参数 (53)
- tar -zxvf -c (55)
- 速递查询 (52)