使用GetDirectories时的性能变化

问题描述:

我有一个生产性能问题,我不明白。我希望有人看到类似的东西,或者至少有一些故障排除技巧。使用GetDirectories时的性能变化

我支持从共享网络驱动器检索文件的继承asp.net web应用程序。一个特定的文件夹[我们称之为FOLDERA]我选择排除故障包含大约300mb的文件和多个子文件夹。 FOLDERA被认为是这个应用程序的一大特色。从最近开始,用户在生产网络共享中从FOLDERA检索文件时性能一直很低。我将代码缩小到了asp.net应用程序中的GetDirectories方法。

RootDir.GetDirectories("*", SearchOption.AllDirectories);

在生产中,FOLDERA读约需8-10秒。在最近的性能下降之前,它大约是1秒。在测试环境中,等量的数据需要1-2秒。

我的理论是一个网络问题,因为用户发现问题的同一个周末是同一个周末网络和硬件升级发生。但是,我不知道如何确定或向网络工程师证明这一点。

我希望看到可能发生的事情。

+0

我以为我会提供一个更新,因为这个问题实际上已经解决。这是一个网络问题。显然这个问题是双工不匹配。双工不匹配是指交换机以全双工模式运行,并且所连接的设备以​​半双工模式运行,或者相反。双工不匹配的结果是性能极低,间歇性连接和连接丢失。 IT将交换机设置为Full 100,并将NIC强制为Full 100。响应时间急剧下降。 – 2010-09-16 12:24:42

我已经没有性能问题所使用的完全相同的方法在一个大的共享目录提取和索引几千PDF文件(80000〜,大小并不重要)(1-2秒)

你可以尝试使用外部程序对开发和生产环境之间文件共享的IO进行基准测试,以证明您的理论,消除任何软件缺陷并将问题传递给基础架构人员。

另一方面,您可以轻松地将这些信息与服务器端的CacheDependency缓存,具体取决于应用程序体系结构。如果这是一项核心功能,这将极大地优化性能。

+0

谢谢,hmf!你提供了一些好点子。 – 2010-09-16 12:23:25