![监视并记录处理网络文件的程序的速度](https://linux22.com/image/665717/%E7%9B%91%E8%A7%86%E5%B9%B6%E8%AE%B0%E5%BD%95%E5%A4%84%E7%90%86%E7%BD%91%E7%BB%9C%E6%96%87%E4%BB%B6%E7%9A%84%E7%A8%8B%E5%BA%8F%E7%9A%84%E9%80%9F%E5%BA%A6.png)
我们在网络中的多台计算机上使用 CAD 程序。所有文件和项目都存储在网络存储中。
用户抱怨打开和保存网络时等待的时间太长。
我们(IT 部门)假设除了纯粹的网络延迟之外还有其他问题。但为了确保万无一失,我们正在考虑一个程序来监控和记录 CAD 项目的开始和结束时间。
也许你们已经对如何实现这个目标有一些想法了?!
我们的第一个想法是记录网络“流”的开始和结束时间。但是我们如何才能确定文件打开过程的开始和结束时间呢?
一些补充说明:
- CAD 项目由很多文件组成
- 所有 CAD 文件都存储在相同且独立的网络共享上
- 数据是从 Windows Server 2008 R2 共享的
- 所有客户端均在 Windows 7 64 位上运行
- 客户端和服务器之间有两台 HP Procurve 4208vl 交换机
- 两台 HP 交换机通过 4gbit/s(4 对光纤电缆)连接
- 约有 6 位客户使用 CAD 程序
- 大约 50 个其他客户端使用其他服务器上的交换机和其他网络共享
任何帮助都将不胜感激:-)
答案1
感谢@joeqwerty 提供的有关数据包捕获程序的提示。
我们现在使用https://www.wireshark.org/它与 smb2 过滤器配合得很好:https://wiki.wireshark.org/SMB2
我们正在使用此过滤器:
- 不显示广播流量:
!(eth.addr == ff:ff:ff:ff:ff:ff)
- 仅获取客户端和服务器之间的流量:
ip.addr == _server-ip_ || ip.addr == _client-ip_
- smb2 协议标志:
smb2.create_flags || smb2.create.rep_flags || smb2.close.flags
- 仅显示 CAD 文件夹:
smb2.filename contains "_foldername_"
所以总的过滤器是:
!(eth.addr == ff:ff:ff:ff:ff:ff) && (ip.addr == _server-ip_ || ip.addr == _client-ip_) && (smb2.create_flags || smb2.create.rep_flags || smb2.close.flags || smb2.filename contains "_foldername_")
通过此过滤器,我们现在可以看到 CAD 文件夹中所有文件的开始和结束请求。通过相关的时间戳,我们可以计算出打开包含所有子文件的整个文件需要多长时间。
虽然没有我们想要的那么自动化,但在我看来,这是一个很好的方法。也许在遥远的未来,我们有时间用一段 Java 代码和 jnetpcap 库来自动化时间测量……