WCF,3个进程中只有1个处理请求 [英] WCF, Only 1 of 3 processes handles requests

查看:135
本文介绍了WCF,3个进程中只有1个处理请求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对WCF一无所知,而那个聪明的家伙却不是.:〜

2k8,64位,标准,16 GB,四核,超线程
具有3个进程的服务,启动时有2个,每个进程只有一个线程.
使用cpu和内存启动2个进程.
5个人管理着我们的客户.
当请求开始时,进程3出现.

处理通话需要5到10分钟.
对服务器的所有调用都会在服务器端锁定服务器对象.

这三个过程持续了一段时间.
其中两个停止处理,而一个继续.
当一个完成时,另一个开始处理,并且一个锁定.

我相信object.lock是本地的,而不是互斥体.
我相信IIS进程不会共享内存.

但是可以肯定,锁看起来像是跨进程运行的.
我们星期一将锁放开,看看会发生什么.

这是任何人都可以听到的问题吗?
谢谢RM

I am ignorant on WCF, and the guy who is smart, isn''t.:~

2k8, 64 bit, standard, 16 GB, quad, hyperthreaded
A service with 3 processes, 2 at start up, each process has a single thread.
2 processes come up, using cpu and memory.
5 people running our client.
Process 3 comes up when requests start.

Processing a call takes 5-10 minutes.
All calls to the server lock the server object on the server side.

The three processes continue for a while.
Two of them stop processing, while one continues.
When the one finishes, another starts processing, and the one locks.

I believe that object.lock is local, not a mutex.
I believe that IIS processes do not share memory.

But it sure looks like the lock is operating across processes.
We are taking the lock out on Monday, to see what happens.

Is this an issue that rings a bell for anyone?
Thanks RM

推荐答案

响应艾哈迈德.
没错,这是资源问题.
所有服务器调用均为同步/阻塞.
服务器正在以客户端的身份回拨给自己.
当一个进程调用相同的SO时,该进程将被锁定.
它从池中取出了一个进程,直到返回为止.
但它也称自己为客户,阻止了另一个.
很快,所有进程都被阻塞.
等待一个完成,以便他们进行处理.
经典僵局. :rolleyes::-O
Response to Ahmed.
You are right, it was a resource issue.
All server calls are synchronous/blocking.
The server was making calls back through to itself as a client.
When a process called the same SO, that process locked.
It took one of the processes out of the pool until it returned.
But it also called itself as a client, blocking another.
Pretty soon, all the processes are blocked.
Waiting for one to finish so they can process.
Classic deadlock. :rolleyes: :-O


我熟悉WCF,但在IIS下却不熟悉.

但是,我遇到了类似的情况,结果要么是数据库表被长时间运行的进程锁定,要么是特定的存储过程返回了300万行,并导致.Net进程因内存不足异常异常中止.

另外,如果.Net进程中的任何线程抛出未处理的异常,则将导致该进程结束.在系统事件日志中查找看起来奇怪的事件.

没有更多信息,我在猜测.
I am familiar with WCF, but not under IIS.

However, I have run into similar situations which turned out to be either a db table being locked by a long-running process or a particular stored procedure returning 3 million rows and causing the .Net process to abort with an out-of-memory exception.

Also, if any thread in .Net process throws an unhandled exception that will cause the process to end. Look for strange-looking events in the system event log.

without more info, I''m guessing.


这篇关于WCF,3个进程中只有1个处理请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆