Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 多个应用程序实例,windows GDI限制_C#_Gdi - Fatal编程技术网

C# 多个应用程序实例,windows GDI限制

C# 多个应用程序实例,windows GDI限制,c#,gdi,C#,Gdi,我正试图使用C同时运行同一个应用程序的数百个实例,在大约200个实例之后,GUI开始急剧减速,直到下一个实例的加载时间从1秒上升到20秒 试验机为: 至强5520 12gb内存 windows 2008 web 64位 在最大负载200个实例时,cpu大约占20%,ram占45%,因此我确信这不是硬件问题 我已经尝试在windows注册表中配置会话大小和共享分区,但似乎没有帮助 我也试着在后台和多个会话上运行这个应用程序,不同的会话,仍然是一样的,我认为可能每个会话都有限制 当减速发生时,例如在

我正试图使用C同时运行同一个应用程序的数百个实例,在大约200个实例之后,GUI开始急剧减速,直到下一个实例的加载时间从1秒上升到20秒

试验机为: 至强5520 12gb内存 windows 2008 web 64位

在最大负载200个实例时,cpu大约占20%,ram占45%,因此我确信这不是硬件问题

我已经尝试在windows注册表中配置会话大小和共享分区,但似乎没有帮助

我也试着在后台和多个会话上运行这个应用程序,不同的会话,仍然是一样的,我认为可能每个会话都有限制

当减速发生时,例如在一个会话上,我可以登录到另一个会话,并且桌面可以正常工作,第一个dekstop不可用

我的问题是-有没有办法剥离gdi对象或者取消GUI的使用?还是windows限制

p、 我不能更改应用程序,因为它是第三方


提前感谢。

在运行200个实例的情况下,持续的上下文切换可能会影响性能。上下文切换不计入CPU负载

编辑:哎呀,链接错了

尝试在系统上监视上下文切换

我怀疑这是GDI——如果GDI句柄/资源用完,你会注意到大量的窗口无法重新绘制,而不是所有的信号都变慢了


性能突然下降的最有可能的原因是,当所有进程都在争夺CPU时间时,您的RAM正在达到最大值,虚拟内存也在遭受重创。检查内存使用情况,如果内存使用率很高,看看是否可以减少应用程序的占用空间。或者通过安装更多RAM来应用硬件修复。或者在可能的情况下,将睡眠添加到应用程序中,这样它们就不会要求CPU提供恒定的时间片,从而不需要从虚拟机中不断地进行分页。

嗨,Jason,我确实遇到了您在调整注册表之前描述的问题。关于ram,我之前确实提到过,在慢下来的时候,内存使用率约为45%,cpu仅为20%,所以我很确定这不是物理硬件问题。谢谢你的快速回复。其他想法?该应用程序可能会做任何不可扩展的事情吗?如果它不希望有200个实例在运行,那么很可能它正在做一些干扰自身的事情。可能会有各种各样的事情无法很好地扩展,原始作者从未想象过会有200个实例同时运行的场景,例如争用文件等共享资源、向整个实例组广播消息、共享内存等。最终如果您不拥有正在执行的应用程序,你能做的可能不多。但是,您可以应用一些小的调整,例如,您可以通过在屏幕外打开所有应用程序来减少GDI资源的使用,但前提是该应用程序编写得足够好,可以在需要资源之前避免使用资源。您可以尝试使用进程监视器,看看是否可以发现任何有关正在发生的事情的提示,例如,硬盘驱动器的使用情况如何-它是否也达到了45%,或者是否已达到最大值?这是一个瓶颈,所以如果不是RAM或CPU,可能是I/O——可能在RAM磁盘上放置关键资源可能有助于IO——它已经在RAM磁盘上运行,但我喜欢你的想法:几乎没有IO。我还尝试在后台运行应用程序,但仍然得到相同的结果。不过,我确实按照Nick的建议检查了上下文切换,但我不确定这意味着什么,也许你可以告诉我-这是在服务器满负荷时拍摄的屏幕截图对不起,我没有在这方面查看上下文切换,因此无法在这方面给你任何明确的指导。但我认为,除非这些应用程序做了一些相当反社会的事情,比如在繁忙的等待循环中强制进行上下文切换,否则仅仅200个进程不应该让操作系统承受太大的压力。也许如果你能发布更多信息,例如,关于应用程序正在做什么,有人可能会给你更多线索。嗨,尼克,我监控过它,不确定它的意思,请看这里。谢谢你的帮助。