DotNetZip性能问题,但仅限于一个特定的服务器

时间:2011-10-13 06:38:50

标签: dotnetzip

我对DotNetZip库有一个奇怪的性能问题。

在应用程序(在asp.net下运行)中,我正在从数据库中读取一组文件,并将它们即时打包成一个zip文件供用户下载。

我的开发笔记本电脑上的一切正常。一个大约10MB的zip文件,默认压缩率大约需要5秒才能完成。但是,在客户的开发服务器上,同一组文件需要大约1-2分钟来压缩。我甚至经历了更长的时间,长达几分钟。当压缩运行时,CPU利用率为100%,否则它保持在0%左右,因此不会因过载而产生。

更有趣的是,在生产服务器上,完成需要大约20秒。

我应该从哪里开始寻找?

一些硬件规格:

我的笔记本电脑

在具有2核和4GB RAM的虚拟机上运行的开发环境。

  • Core i5 M540 2,5GHz
  • 8 GB RAM
  • Win7的

开发服务器

根据“我的电脑”中的属性对话框(可能已虚拟化)

  • Intel Xeon 5160 3GHz
  • 540MB RAM
  • Windows 2003 Server

任务管理器报告单核

生产服务器

根据“我的电脑”中的属性对话框(可能已虚拟化)

  • Xenon 5160 3GHz
  • 512MB RAM
  • Windows 2003 Server

任务管理器报告双核

更新 服务器正在VMWare主机上运行。找到隐藏在任务栏中的VMWare图标。

2 个答案:

答案 0 :(得分:0)

mitch说,病毒扫描程序可能是你最好的选择。结合开发服务器只是一个核心机器而生产服务器是双核心(可能没有病毒扫描程序)可以解释延迟。知道的是那些机器中的磁盘类型。例如,如果生产服务器和您的笔记本电脑有SSD,并且开发服务器有一个非常旧的低转速标准硬盘,这也可以解释延迟。尝试获取开发服务器和生产服务器的zip文件夹的I / O读/写视图,您可以使用SysInternals tools,如果您有病毒扫描程序或任何其他意外进程运行'可能会看到那里的差异。 SysInternals工具可以很快找到罪魁祸首。

更新:因为您评论了zip是在内存中创建的我想添加您还可以使用这些工具来更好地了解内存中发生的事情。延迟几分钟,你期望几乎相同的结果,因为开发服务器和生产服务器是相似的让我想到页面文件..看看是否有其他进程在开发服务器上声称了大量的内存。如果没有足够的zip操作,dev服务器将开始使用页面文件,这是非常昂贵的。

答案 1 :(得分:0)

硬件似乎是这里的问题。

客户的IT人员现在已经升级了运行虚拟化开发服务器的服务器硬件,现在我看到与本地计算机上相同的程序包大小和文件数的压缩时间大约为6秒。

现在在“我的电脑”属性窗口中找到了规范:

  • AMD Phenom II X6 1100T
  • 3.83GHz 1,99 GB RAM