asp.net session 中有Reader/Writer的锁机制.
我想问下如何知道请求被阻塞是因为session被锁而产生的呢?
我通过dump w3wp 还是看不出里面有被锁的情况?
不知道园友们有证明是session被锁的情况吗?
或者有什么思路吗?
Reader/Writer的锁机制, 一个是写锁定, 一个是读锁定。 读锁定阻塞一个写锁定 但不会阻塞读锁定;而写锁定会阻塞所有的读写锁定。你可以搞两个框架用同一个页面去写同个session试试。 一个要等另一个完成才开始写。 这个是排队的, 你应该可以看得到。
你好,现象是可以看到。我想看看内在变化。我通过dump w3wp已经找到了等待的线程。通过查看线程的调用栈,也找到栈顶的方法参数中指向了一个注册表句柄:
0:024> !handle 00000002 f
Handle 00000002
Type Key
Attributes 0
GrantedAccess 0:
None
None
HandleCount 0
PointerCount 0
Name \REGISTRY\MACHINE\SYSTEM\ControlSet001\Control\SESSION MANAGER
但也只能到这里,但我还是不能说明就因为这个指向也导致的阻塞。希望能多给点指点 ,谢谢
请求被阻塞 跟session有什么关系?
因为一个会话是独占一个session的,当在一个会话中发生多个请求时,这些请求采用了session的锁机制就会,每次只执行一个请求,执行完一个在执行下一个的