我使用winrs对我正在开发的一些服务器软件运行测试客户端。我使用客户端在被测试的服务器上生成用于分析的负载。我在服务器软件和winrs上运行的机器和运行测试客户端的机器(在第一台机器上使用winrs来运行它)都是Win7盒、x64、大量内存。所有进程都以管理员的身份运行。
当我手动运行测试客户端时,它可以生成6000个并发连接,并填充一个100 Gb链接(所讨论的机器有Gb网络,所以我只将它们之间的链接加载到10%左右),当我通过winrs运行它时,大约一半的连接会失败,而OpenSSL中的内存相关错误似乎是错误的。
我确信我的测试客户端正在发生一些奇怪的事情,但是如果知道对winrm代表winrs的请求运行的进程可能设置了什么限制,这将是有用的。我还没有找到任何说明有限制的文档,但我可能找得不够仔细。
更新:考虑了这一点之后,似乎进程可能是在内存受限的作业对象下运行的,这是有意义的,但我认为如果是这样的话,它将是可以在服务器端配置的.
发布于 2011-04-23 00:12:29
是的,它是可配置的。在命令行中,将限制设置为500 to。
winrm设置winrm/config/winrs @{MaxMemoryPerShellMB="500"}
在"winrm配置“上搜索msdn文档以获得更多信息。
发布于 2010-11-19 16:00:36
看来我是对的。Winrs执行的命令在作业对象内部运行,作业对象受到限制。
下面是一个简单的程序,用来转储这些作业限制,说明在我的Windows 7框上正在执行的进程。
Job report for process: 10676
Process IS in a job
Flags: 0x2b08 -
JOB_OBJECT_LIMIT_ACTIVE_PROCESS
JOB_OBJECT_LIMIT_PROCESS_MEMORY
JOB_OBJECT_LIMIT_JOB_MEMORY
JOB_OBJECT_LIMIT_BREAKAWAY_OK
JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE
ActiveProcessLimit: 15
Affinity: 0x0
MaximumWorkingSetSize: 0
MinimumWorkingSetSize: 0
PerJobUserTimeLimit: 0
PerProcessUserTimeLimit: 0
PriorityClass: 32
SchedulingClass: 5
JobMemoryLimit: 157286400
ProcessMemoryLimit: 157286400给我带来麻烦的极限是倒数第二。记忆的极限。我还是不知道这些是每台机器还是每个用户的配置,或者根本不知道.
好消息是作业有JOB_OBJECT_LIMIT_BREAKAWAY_OK集,这意味着我可以编写一个通过Winrs运行的程序启动程序,它本身运行实际的目标命令,并使用CREATE_BREAKAWAY_FROM_JOB标志启动新进程。这将导致我的实际目标进程在WinRs作业限制之外运行。
https://serverfault.com/questions/198197
复制相似问题