我有一个负载测试器,可以调用我的WCF服务,并且我已经使用选项来构建它以并行运行调用。只有在并行运行时,我才会收到所有线程的以下错误:“服务器没有提供有意义的回复;这可能是由于合同不匹配,过早的会话关闭或内部服务器错误造成的。”
这或多或少是我的代码:
if (runMultiThreaded)
{
ParallelOptions options = new ParallelOptions();
options.MaxDegreeOfParallelism = System.Environment.ProcessorCount;
ParallelLoopResult loopResult = Parallel.For(0, numberOfTimesToTest, options,
(i, loopState) =>
{
myService.MyOperation();
if (loopState.ShouldExitCurrentIteration) return;
});
}
else
{
for (int i = 0; i < test1NumberOfRuns; i++)
{
myService.MyOperation();
}
}
有什么想法吗?如果您需要更多详细信息,请与我们联系。
更新:myService是我的服务操作合同接口的一个实例,它是使用CreateChannel方法使用ChannelFactory创建的。
谢谢!
答案 0 :(得分:2)
我假设您的myService
是ClientBase<T>
子类或通过ChannelFactory<T>::CreateChannel
明确创建的频道?如果是这样,那些实例不能保证是线程安全的,那么你需要每个工作线程一个实例。