C# 为什么独立过程会随着时间的推移而花费更长的时间?

C# 为什么独立过程会随着时间的推移而花费更长的时间?,c#,windows-server-2008,C#,Windows Server 2008,我已经创建了自己的Job Manager应用程序 这将在专用服务器上运行my worker应用程序的多个副本。我在我的30核机器上以50个为一批运行大约3000个工作进程(作业)。每项工作都做相似的工作量。从SSD磁盘上的缓存读取数据,在硬盘驱动器和Sql数据库上的里程碑处写入信息 网络流量低,磁盘使用率低,SqlServer活动低,内存保持在120G容量的60%左右 每批作业开始需要更长的时间。最初,前几百个作业都很好地利用了CPU,但随后CPU使用率开始下降(显示0很多),作业时间开始增加。

我已经创建了自己的Job Manager应用程序

这将在专用服务器上运行my worker应用程序的多个副本。我在我的30核机器上以50个为一批运行大约3000个工作进程(作业)。每项工作都做相似的工作量。从SSD磁盘上的缓存读取数据,在硬盘驱动器和Sql数据库上的里程碑处写入信息

网络流量低,磁盘使用率低,SqlServer活动低,内存保持在120G容量的60%左右

每批作业开始需要更长的时间。最初,前几百个作业都很好地利用了CPU,但随后CPU使用率开始下降(显示0很多),作业时间开始增加。我不明白为什么会这样,因为我的资源管理器没有显示任何最大化的内容

这里会发生什么

每个工作进程(作业)都是完全独立启动的my exe实例。所以我认为这不可能是内存泄漏


我不能配置文件-因为单次运行exe实例的配置文件显示它运行得很快

听起来像是对某些资源的争用,但如果没有代码,这只是一个猜测。也许你可以发布代码或是一些复制问题的东西?问题是这是一个非常大的应用程序。不过,我不会在资源管理器中看到争用吗?这实际上取决于您的工作在做什么以及如何做。我可以简单地通过滥用
互斥体
来编写一些非常慢的代码,这些代码使用很少的CPU和资源。在您的情况下,我想知道瓶颈是数据库还是文件系统。您是否尝试过分析SQL Server?时间度量指标之间存在巨大差异。例如,CPU时间和挂钟时间是完全不同的衡量标准。虽然这听起来不像是关于速度的常见无效问题,但我确实觉得速度咆哮可能会帮助你:@Zer0“我可以通过滥用互斥来编写一些非常慢的代码,只需使用很少的CPU和资源。”或者更简单的
Thread.Sleep(10000)需要10秒,CPU消耗量接近0我同意现有的描述中有太多的不确定因素,除了胡乱猜测之外,什么都不能说。