我的应用是ASP.NET MVC。
我在本地计算机上使用了大量并行处理(8个内核),运行非常顺利。
但是当我滚动到Azure Medium Instance(2个核心)时,在测试期间,我得到了奇怪的减速并且程序有时会停止工作。
有没有办法模拟1,2或其他数量的内核来匹配生产环境中会发生什么?
答案 0 :(得分:3)
我猜您可以尝试为开发服务器设置进程关联。为此,(假设Windows 7)打开任务管理器,右键单击服务器进程并选择Set Affinity...
并选择要在其上运行的核心。
上面找到了解决@ Dai的答案,但这意味着你必须自己启动开发服务器。此.bat
文件使用两个核心运行notepad.exe(您可以通过检查其在任务管理器中的亲和性来验证):
start /affinity 0x03 notepad.exe
0x03
指定核心1和核心2.帮助命令有点令人困惑,但它似乎将这些结合起来得到结果(如,1 + 2 = 3,除非我误解了它)。因此,如果您需要更改为不同的核心集,请牢记这一点。
答案 1 :(得分:0)
@ JohnH的方法似乎是最好的,但每次w3wp.exe在你的机器上运行时你都必须这样做。另一种方法是将操作限制为2个线程(如果使用超线程,则为4个)。我们需要有关您如何并行处理信息的更多信息。
在8核计算机上,与2核Azure虚拟机相比,可分析问题应该只运行4倍,但是“程序停止运行”情况意味着你有一个错误。
答案 2 :(得分:0)
我不确定这是否会完全有助于这种情况,但您可以为每个核心设置MaxDegreeOfParalellism
。这样就可以限制运行的线程。