为什么服务器性能如此糟糕? 可以做些什么来提高服务器的速度?

使用带有Service Pack 1的Windows Server2008 R2 Standard的处理非常慢。 情况:使用文本数据读取文本文件以填充一系列MS Sql表。 转换后的数据用于生成每月PDF发票文件; PDF文件直接保存到硬盘。 该应用程序是multithreading,一个用于文本转换的线程和三个用于生成PDF发票的线程。 文本转换与发票生成同时发生。

应用软件:使用Microsoft Visual Studio 2010 Ultimate的C#。 Crystal Report Writer 2011与运行时13_0_3 64位版本。 目标平台是x64; 也作为x86testing,以及任何具有相似结果的CPU。 Microsoft .NET Framework 4.0。 微软Sql 2008

问题:软件运行速度非常慢。 文本文件的转换大约是每秒六百五十条logging,PDF文件的生成大约是每分钟十二张发票。 要转换的文本文件是六百兆,有七千张发票要生成。

该软件安装在来自同一分发文件的三台不同的计算机上。 相同的文本文件在每台机器上进行了转换。 执行应用程序的用户是每台机器上的pipe理员。 唯一的差异是机器和操作系统。 configuration如下:

服务器:操作系统:Windows Server2008 R2标准版64位(6.1,Build7601)SP1服务包:系统制造商:IBM系统型号:System x3550 M3- [7944AC1] – BIOS:默认系统BIOS处理器:Intel®Xeon®CPU E5620 @ 2.4GHz(16个CPU)内存:16384MB

笔记本:操作系统:Windows 7家庭高级版标准版64位(6.1,Build7601)系统制造商:惠普系统型号:惠普Pavilion dv7笔记本电脑BIOS BIOS:默认系统BIOS处理器:AMD羿龙II N640双核处理器2.9GHz 2个CPU)内存:6144MB

桌面:操作系统:Windows 7专业版64位(6.1,Build7601)SP1系统制造商:Dell Inc.系统型号:OptiPlex 960 BIOS:Phoenix ROM BIOS PLUS版本1.10 A11处理器:Intel Core™2 Quad CPU Q9650 @ 3.00GHZ 4个CPU)内存:16384MB

每台机器处理结果:

应用程序执行七次,平均值显示在下面。

Machine Text Records Invoices Generated Converted Per Minute Per Minute Server (1) 650 12 Notebook 980 17 Desktop 2,100 45 

(1)服务器专用于执行此应用程序; 没有额外的应用程序正在执行。

问题:为什么服务器性能很差? 可以做些什么来提高服务器的速度?

Windows客户端和服务器版本之间的差异之一在于“系统属性”中“性能选项”屏幕的“高级”选项卡。

调整以获得最佳性能:程序或后台服务。

默认情况下,客户端SKU设置为“程序”,默认情况下,“服务器SKU”设置为“后台服务”。

这个设置真正做的是调整操作系统的Thread Quantum。 线程量是在线程调度程序决定调度另一个线程执行或继续让当前线程执行之前允许线程运行的时间量。

“后台服务”或“服务器”设置使线程量化更长。 这意味着减less了上下文切换,这意味着服务器线程在被另一个线程中断之前有更好的服务请求完成的机会。

从Windows 7和2008 R2开始,每个线程的时钟间隔为2个时钟间隔,而每个线程的时钟间隔为12个时钟间隔。

如果各种线程的工作负载不匹配,实际上需要上下文切换,那么这可能会导致服务器上运行的multithreading应用程序出现性能问题。