我想对我们的 NFS 服务器进行一些分析,以帮助追踪我们应用程序中的潜在瓶颈。服务器正在运行 SUSE Enterprise Linux 10。
我想知道的事情是:
我已经知道可用的统计数据/proc/net/rpc/nfsd,事实上我写了一篇博客文章深入描述了它们。我正在寻找的是一种深入挖掘并帮助了解影响特定客户所见性能的因素的方法。我想分析 NFS 服务器在我们集群上的应用程序性能中扮演的角色,以便我可以想出最佳优化它的方法。
我在使用 openssh(服务器)和 putty(客户端)组合使用远程 webproxy 时遇到了性能问题。我想禁用加密并测试结果以查看它是否有所作为。我怎样才能做到这一点?有什么我可以修改的sshd_config。我对openssh很陌生。
任何其他想法将不胜感激。
我基本上将我的 IE 设置为使用 127.0.0.1 袜子作为代理。我将我的腻子连接到家里的 openssh 服务器,瞧——我可以通过它浏览互联网。但是,即使我知道我家的连接速度很快(例如,ftp 的工作速度超过 50Kbytes/sec。
我有两台连接 10Gbit 以太网的机器。让其中一个是 NFS 服务器,另一个是 NFs 客户端。
通过 TCP 测试网络速度,iperf显示双向约 9.8 Gbit/s 的吞吐量,因此网络正常。
测试 NFS 服务器的磁盘性能:
dd if=/dev/zero of=/mnt/test/rnd2 count=1000000
Run Code Online (Sandbox Code Playgroud)
结果是 ~150 MBytes/s,因此磁盘可以正常写入。
服务器/etc/exports是:
/mnt/test 192.168.1.0/24(rw,no_root_squash,insecure,sync,no_subtree_check)
Run Code Online (Sandbox Code Playgroud)
客户端/mnt/test使用以下选项将此共享安装到本地:
node02:~ # mount | grep nfs
192.168.1.101:/mnt/test on /mnt/test type nfs4 (rw,relatime,sync,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.102,local_lock=none,addr=192.168.1.101)
Run Code Online (Sandbox Code Playgroud)
如果我尝试从 NFS 共享在客户端计算机上下载一个大文件 (~5Gb),我会获得~130-140 MBytes/s 的性能,接近服务器的本地磁盘性能,所以它是令人满意的。
但是,当我尝试将大文件上传到 NFS 共享时,上传开始时约为 1.5 Mbytes/s,缓慢增加到 18-20 Mbytes/s 并停止增加。有时,在实际开始上传之前共享“挂起”几分钟,即主机之间的流量接近于零,如果我执行ls /mnt/test,它在一两分钟内不会返回。然后ls命令返回并以最初的 1.5Mbit/s 速度开始上传。
当上传速度达到最大值(18-20 Mbytes/s)时,我运行iptraf-ng并在网络接口上显示约 190 Mbit/s 的流量,因此网络不是这里的瓶颈,以及服务器的 HDD。
我试过的:
1. 在仅与 100Mbit 以太网 NIC …
通常,我们现场安装的基于 debian 稳定版的应用程序在虚拟机中运行 - 通常在 VMware ESXi 中。在一般情况下,我们无法了解或影响他们的虚拟化环境,也无法访问例如 VMware vCenter 客户端或等效物。我在这里重点介绍 VMware,因为这是迄今为止我们看到的最常见的。
我们想:
现在什么是 X、Y 和 Z?
我们一次又一次地看到,当出现性能问题时,问题不在于我们的应用程序,而在于虚拟化环境。例如,另一台虚拟机使用大量 CPU、内存或实际存储磁盘的 SAN 被我们的应用程序以外的其他东西大量使用。我们目前无法证明或反驳这一点。
从理论上讲,有时我们的应用程序也可能很慢...... ;-)
如何确定我们性能问题的根本原因:虚拟环境还是我们的应用程序?
性能问题通常有 3 个方面:CPU、内存和磁盘 I/O。
例如,在 VMware 中,管理员可以指定预留和限制,以 MHz 表示,但是例如,一台 ESX 主机上的 512MHz 与另一台 ESX 主机上的 512MHz 完全相同,可能在完全不同的 ESX 集群中?
我们如何衡量我们是否真的得到了它?当我们的应用程序运行时,我们可能会看到我们在 4 个 CPU 上的 CPU 利用率为 212%。这是因为我们的应用程序做了很多事情,还是因为同一主机上的另一个 VM 正在运行 CPU 密集型任务并使用所有 CPU?
如果我们要求例如 16GB …
你好,
我正在编写一些脚本来处理来自各种照片网站的图像。现在我将所有这些数据存储在同一目录中的单个文本文件中。
该目录可通过网络访问。最终用户调用 Web 服务,该服务返回用户所需文件的路径。
我想知道将所有这些文件放在同一目录中会在哪个阶段看到性能影响?(如有)
我们使用 rsnapshot 进行备份。它保留了备份文件的大量快照,但它确实删除了旧文件。这很好。然而,rm -rf在一个巨大的目录树上做一个大约需要 7 个小时。文件系统是 XFS。我不确定那里有多少个文件,但可能有数百万个。
有没有办法加快速度?是否有任何命令可以执行相同的操作rm -rf并且不需要花费数小时和数小时?
我们都曾抱怨“网络”在某些时候“慢”:可能被本地化到一个房间(交换机)或一台计算机,可能只是互联网(DNS?浏览器问题?),可能只是一个应用程序(长时间运行的 SQL 查询?正在运行 AV 扫描?)。
当您排除了明显的系统和/或应用程序问题后,您将如何测试网络的缓慢或不稳定行为?你在 OSI 层上工作吗?如果是这样,如何检查每一层?您如何确保物理网络在未知环境中正常运行?广播过多或广播风暴怎么办?第 3 层及以上?跟踪路由?任何其他提示,方法,想法?适用于各种规模网络的必备功能和工具(端口镜像、SNMP、监控等)?
我见过这个问题: 如何识别大量写入磁盘?
而且我之前使用过dstat和atop ……但它们似乎没有指出是什么进程导致了磁盘 I/O。例如,来自 dstat:
dstat -ta --top-bio
----system---- ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- ----most-expensive----
time |usr sys idl wai hiq siq| read writ| recv send| in out | int csw | block i/o process
14-12 16:16:25| 22 3 49 26 0 0|2324k 0 | 17k 6144B| 0 0 |1324 0 |
14-12 16:16:26| 24 3 30 43 0 0|4960k 8192B|1498B 4322B| 0 0 |1494 0 |wget 0 4096B
14-12 16:16:27| 25 4 38 33 0 …Run Code Online (Sandbox Code Playgroud) 为什么磁盘密集型应用程序在 SAN 上比在物理磁盘上运行得更快?我原以为物理磁盘会稍微快一点,但实际上,当它的工作驱动器设置为 SAN 上的分区时,该过程的运行速度会快 100 倍。
我们的猜测是 SAN 开箱即用优化为快速,而物理磁盘调整设置与操作系统 (Solaris) 相关并且尚未触及或操作系统修补。
在最高活动期间,磁盘 I/O 以 100% 运行,完成写入的时间超过 2 秒,因为多个进程同时写入磁盘。
(仅供参考,所涉及的应用程序是 Informatica PowerCenter)
我很好奇是否有人在文件系统和数据库性能之间做过任何实验或比较。在 Linux 上,我想知道 postgres 数据库的最佳文件系统是什么。此外,哪些设置(inode 等)最适合它?根据数据库中的数据,这可能会大不相同吗?
如果您正在寻找有关一般文件系统/数据库性能的问题,这篇文章有一些很好的信息。
但是,我想获得尽可能多的关于插入性能而不是读取性能的建议。感谢所有伟大的答案!
performance ×10
filesystems ×2
linux ×2
nfs ×2
centos ×1
database ×1
encryption ×1
files ×1
hard-drive ×1
io ×1
networking ×1
optimization ×1
postgresql ×1
proxy ×1
rsnapshot ×1
socks ×1
ssh ×1
tuning ×1
vmware-esxi ×1
web-services ×1