<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Here snails go jogging every morning</title><link>http://blogs.msdn.com/banibrata_de/default.aspx</link><description>Can't bELiVe?  Read on!</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>DeepInTrouble, the new KID on the block</title><link>http://blogs.msdn.com/banibrata_de/archive/2009/12/06/deepintrouble-the-new-kid-on-the-block.aspx</link><pubDate>Sun, 06 Dec 2009 17:21:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9933153</guid><dc:creator>bani</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/banibrata_de/comments/9933153.aspx</comments><wfw:commentRss>http://blogs.msdn.com/banibrata_de/commentrss.aspx?PostID=9933153</wfw:commentRss><description>&lt;H5&gt;Background:&lt;/H5&gt;
&lt;P&gt;There are many performance monitoring/analyzing tools for different bottleneck conditions of resources. From my experience, I can’t use these tools always to analyze, because I need a prevailing condition where I can use these tools. But, readymade condition is not available always. So I thought of investing some time to create one WPF application, &lt;STRONG&gt;DeepInTrouble (DIT)&lt;/STRONG&gt; which will simulate stress on different local resources. You can easily create one such condition and turn on your favorite tool; investigate the patterns arising from it. Currently DIT addresses four different areas. Processor, Memory, Disk and Thread Contention .&lt;/P&gt;
&lt;H6&gt;Processor:&lt;/H6&gt;
&lt;P&gt;This will keep the processor occupied at least for the duration mentioned below. The start button will be disabled until the request is completed. This is to prevent users from submitting repeated request of the same kind to the system. &lt;/P&gt;
&lt;H6&gt;Input fields&lt;/H6&gt;
&lt;H6&gt;Duration:&lt;/H6&gt;
&lt;P&gt;Number of seconds/thread to keep the processor busy &lt;/P&gt;
&lt;H6&gt;No of workers:&lt;/H6&gt;
&lt;P&gt;Number of threads to be competing for CPU scheduling each to keep processor/core keep 100% busy for the “Duration”. &lt;/P&gt;
&lt;H6&gt;One Core:&lt;/H6&gt;
&lt;P&gt;If selected, all the threads will run only on the first core. Rest of the cores will be idle. By default it will occupy all the cores. &lt;/P&gt;
&lt;H6&gt;Memory: &lt;/H6&gt;
&lt;P&gt;This will simulate a memory leak into the DIT process space. It can be slow or fast, depending on the value of Alloc Interval. &lt;/P&gt;
&lt;H6&gt;Input fields&lt;/H6&gt;
&lt;H6&gt;Size:&lt;/H6&gt;
&lt;P&gt;Value in Kbytes that will determine the size of each allocation unit &lt;/P&gt;
&lt;H6&gt;Allocations:&lt;/H6&gt;
&lt;P&gt;Number of allocations to be made. Alloc intervals: It controls the speed of allocation. &lt;/P&gt;
&lt;H6&gt;UnManaged:&lt;/H6&gt;
&lt;P&gt;If selected, memory will be occupied only from the unmanaged/native area. By default it will allocate from the managed space. &lt;/P&gt;
&lt;H6&gt;DISKIO:&lt;/H6&gt;
&lt;P&gt;This will generate a lot of disk IO. Right now it will generate each file with 97MB of data. Depending on the number of files and thread count the traffic can be controlled &lt;/P&gt;
&lt;H6&gt;Input fields&lt;/H6&gt;
&lt;H6&gt;Number of files:&lt;/H6&gt;
&lt;P&gt;This will determine how many files to be created by each of the thread.. &lt;/P&gt;
&lt;H6&gt;Thread count:&lt;/H6&gt;
&lt;P&gt;This will control number of thread each creating file count of “Number of files” &lt;/P&gt;
&lt;H6&gt;Contention:&lt;/H6&gt;
&lt;P&gt;This will create a number of threads (thread count) and enter inside a critical section which serilizes the operation while rest of the threads will be waiting. &lt;/P&gt;
&lt;H6&gt;Input fields&lt;/H6&gt;
&lt;H6&gt;Duration:&lt;/H6&gt;
&lt;P&gt;The number of seconds each thread will be inside the critical section. &lt;/P&gt;
&lt;H6&gt;Thread count:&lt;/H6&gt;
&lt;P&gt;Number of threads waiting for the shared object. &lt;/P&gt;
&lt;P&gt;Checkout my &lt;A href="http://blogs.msdn.com/banibrata_de/" mce_href="http://blogs.msdn.com/banibrata_de/"&gt;blogs&lt;/A&gt;, to use DIT for different target performance tools. For any questions/feedback/bug please contact&amp;nbsp; &lt;A href="mailto:banibrata.de@microsoft.com" mce_href="mailto:banibrata.de@microsoft.com"&gt;&lt;STRONG&gt;ME &lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9933153" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/banibrata_de/attachment/9933153.ashx" length="149504" type="application/octet-stream" /><category domain="http://blogs.msdn.com/banibrata_de/archive/tags/Create+trouble/default.aspx">Create trouble</category><category domain="http://blogs.msdn.com/banibrata_de/archive/tags/CPU/default.aspx">CPU</category><category domain="http://blogs.msdn.com/banibrata_de/archive/tags/Memory/default.aspx">Memory</category><category domain="http://blogs.msdn.com/banibrata_de/archive/tags/Contenton/default.aspx">Contenton</category><category domain="http://blogs.msdn.com/banibrata_de/archive/tags/Disk/default.aspx">Disk</category></item><item><title>Process monitor to fix registry glitches</title><link>http://blogs.msdn.com/banibrata_de/archive/2009/09/09/process-monitor-to-fix-registry-glitches.aspx</link><pubDate>Wed, 09 Sep 2009 09:47:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9892978</guid><dc:creator>bani</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/banibrata_de/comments/9892978.aspx</comments><wfw:commentRss>http://blogs.msdn.com/banibrata_de/commentrss.aspx?PostID=9892978</wfw:commentRss><description>&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Background&lt;/EM&gt;&lt;/STRONG&gt;:&lt;/P&gt;
&lt;P&gt;Recently we found this error message too frequent from one of our SharePoint server. &lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;Windows SharePoint Services&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; General&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8l1n&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; High&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; An SPRequest object was reclaimed by the garbage collector instead of being explicitly freed.&amp;nbsp; To avoid wasting system resources, dispose of this object or its parent (such as an SPSite or SPWeb) as soon as you are done using it.&amp;nbsp; Allocation Id: {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}&amp;nbsp; To determine where this object was allocated, create a registry key at HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\HeapSettings.&amp;nbsp; Then create a new DWORD named SPRequestStackTrace with the value 1 under this key.&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I read this wonderful blog on this:&lt;/P&gt;
&lt;P&gt;&lt;A title=http://blogs.technet.com/stefan_gossner/archive/2008/05/07/troubleshooting-spsite-spweb-leaks-in-wss-v3-and-moss-2007.aspx href="http://blogs.technet.com/stefan_gossner/archive/2008/05/07/troubleshooting-spsite-spweb-leaks-in-wss-v3-and-moss-2007.aspx" mce_href="http://blogs.technet.com/stefan_gossner/archive/2008/05/07/troubleshooting-spsite-spweb-leaks-in-wss-v3-and-moss-2007.aspx"&gt;http://blogs.technet.com/stefan_gossner/archive/2008/05/07/troubleshooting-spsite-spweb-leaks-in-wss-v3-and-moss-2007.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Although the error message was pretty self-explanatory. So, as recommended I went inside my server registry and created a new key “HeapSettings’, it was not present by default. Under “HeapSettings” I created another key names &lt;STRONG&gt;SPRequestStackTrace&lt;/STRONG&gt; with DWORD value as 1.&lt;/P&gt;
&lt;P&gt;Then I restarted my SharePoint service. But&amp;nbsp; my surprise I found the same message on the SharePoint logs. Somehow the SharePoint service disregarded this new registry key. I thought of taking help of Process Monitor (&lt;A title=http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx href="http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx" mce_href="http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx"&gt;http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx&lt;/A&gt;)from Sysinternals, and followed these steps:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Stop the SharePoint service &lt;/LI&gt;
&lt;LI&gt;Start Process monitor and select only the registry events. &lt;/LI&gt;
&lt;LI&gt;Set a filter for OWSTIMER.EXE process and registrypath HKLM\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\HeapSettings &lt;/LI&gt;
&lt;LI&gt;Start the Service. &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;EM&gt;&lt;STRONG&gt;Observation&lt;/STRONG&gt;&lt;/EM&gt;:&lt;/P&gt;
&lt;P&gt;I found this screenshot below. For some reasons the service can’t read this key as it says “NAME NOT FOUND”.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/banibrata_de/WindowsLiveWriter/Processmonitortofixregistryglitches_ACB7/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/banibrata_de/WindowsLiveWriter/Processmonitortofixregistryglitches_ACB7/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/banibrata_de/WindowsLiveWriter/Processmonitortofixregistryglitches_ACB7/image_thumb.png" width=458 height=108 mce_src="http://blogs.msdn.com/blogfiles/banibrata_de/WindowsLiveWriter/Processmonitortofixregistryglitches_ACB7/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;I thought it might be an issue with the key permission. But it was fine.&lt;/P&gt;
&lt;P&gt;Later on casually I copied the string &lt;STRONG&gt;SPRequestStackTrace&lt;/STRONG&gt; into&amp;nbsp; notepad to see the presence of any non printable character, and I found there is a space at the end “&lt;STRONG&gt;SPRequestStackTrace&amp;lt;SPACE&amp;gt;&lt;/STRONG&gt;“ like this.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Recheck&lt;/EM&gt;&lt;/STRONG&gt;:&lt;/P&gt;
&lt;P&gt;I made the necessary changes in the registry key name and followed the same four steps and found this. It was absolute fine.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/banibrata_de/WindowsLiveWriter/Processmonitortofixregistryglitches_ACB7/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/banibrata_de/WindowsLiveWriter/Processmonitortofixregistryglitches_ACB7/image_4.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/banibrata_de/WindowsLiveWriter/Processmonitortofixregistryglitches_ACB7/image_thumb_1.png" width=463 height=75 mce_src="http://blogs.msdn.com/blogfiles/banibrata_de/WindowsLiveWriter/Processmonitortofixregistryglitches_ACB7/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;I started loving this wonderful tool process monitor.&lt;/P&gt;
&lt;DIV style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; PADDING-TOP: 0px" id=scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c5caa3ea-5af6-45e1-912e-60908efd80d9 class=wlWriterEditableSmartContent&gt;del.icio.us Tags: &lt;A href="http://del.icio.us/popular/process+monitor" rel=tag mce_href="http://del.icio.us/popular/process+monitor"&gt;process monitor&lt;/A&gt;,&lt;A href="http://del.icio.us/popular/SPRequestStackTrace" rel=tag mce_href="http://del.icio.us/popular/SPRequestStackTrace"&gt;SPRequestStackTrace&lt;/A&gt;,&lt;A href="http://del.icio.us/popular/SharePoint" rel=tag mce_href="http://del.icio.us/popular/SharePoint"&gt;SharePoint&lt;/A&gt;,&lt;A href="http://del.icio.us/popular/trailing+space+registry+key+name" rel=tag mce_href="http://del.icio.us/popular/trailing+space+registry+key+name"&gt;trailing space registry key name&lt;/A&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9892978" width="1" height="1"&gt;</description></item><item><title>WCF host process hung: From winDBG perspective</title><link>http://blogs.msdn.com/banibrata_de/archive/2008/12/16/wcf-host-process-hung-from-windbg-perspective.aspx</link><pubDate>Tue, 16 Dec 2008 18:32:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9226282</guid><dc:creator>bani</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/banibrata_de/comments/9226282.aspx</comments><wfw:commentRss>http://blogs.msdn.com/banibrata_de/commentrss.aspx?PostID=9226282</wfw:commentRss><description>&lt;P&gt;One of my customers complaints of an unstable WCF service on his production environment. I heard them saying: "The service is frozen", "Getting unknown error from the client side UI", "The service is unresponsive". The real challenge of debugging a production issues is to reproduce it in some other kind of environment. And this is really a BIG task. But I was somewhat lucky; using my unit tests from a VSTS test client , I ran it for almost 10/12 hours until I reached a situation where all the complaints seem to be true. I took a memory dump of my WCF service process.&lt;/P&gt;
&lt;P&gt;I tried to launch the client GUI. But unfortunately, after sometime I saw "Unknown Error" form the GUI. I checked the client side log and found something very interesting: 'The socket connection was aborted. This could be caused by an error processing your message or a receive timeout being exceeded by the remote host, or an underlying network resource issue. Local socket timeout was '00:09:59.7289458'.&lt;/P&gt;
&lt;P&gt;I tried to visualize the launching of the GUI application. It will contact almost 5/6 endpoints of the back end WCF service before successfully launching it. So, I suspect it can be because of at least one of the endpoint which is timing out.&lt;/P&gt;
&lt;P&gt;This great blog: &lt;A title=http://blogs.msdn.com/mahjayar/archive/2006/12/12/debugging-wcf-applications.aspx href="http://blogs.msdn.com/mahjayar/archive/2006/12/12/debugging-wcf-applications.aspx" mce_href="http://blogs.msdn.com/mahjayar/archive/2006/12/12/debugging-wcf-applications.aspx"&gt;http://blogs.msdn.com/mahjayar/archive/2006/12/12/debugging-wcf-applications.aspx&lt;/A&gt; really helped me to debug.&lt;/P&gt;
&lt;P&gt;I started with dumping the ServiceHost types.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;0:025&amp;gt; !dumpheap -type System.ServiceModel.ServiceHost&lt;/EM&gt; 
&lt;P&gt;Statistics:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MT&amp;nbsp;&amp;nbsp;&amp;nbsp; Count&amp;nbsp;&amp;nbsp;&amp;nbsp; TotalSize Class Name&lt;BR&gt;50e822f4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 11&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 220 System.ServiceModel.ExtensionCollection`1[[System.ServiceModel.ServiceHostBase, System.ServiceModel]]&lt;BR&gt;50eaf9c8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 11&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 264 System.Collections.Generic.List`1[[System.ServiceModel.IExtension`1[[System.ServiceModel.ServiceHostBase, System.ServiceModel]], System.ServiceModel]]&lt;BR&gt;50e62118&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 11&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 352 System.ServiceModel.ServiceHost+ReflectedContractCollection&lt;BR&gt;&lt;STRONG&gt;50e553e8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 11&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1496 System.ServiceModel.ServiceHost&lt;/STRONG&gt; 
&lt;P&gt;I found &lt;STRONG&gt;11&lt;/STRONG&gt; instances of System.ServiceModel.ServiceHost type. I checked the wcf servicehost config file and found there are &lt;STRONG&gt;11&lt;/STRONG&gt; endpoints configured. So, it makes sense. &lt;/P&gt;
&lt;P&gt;My particular interest was to see if any of the endpoints had reached it's throttle limit. To look into it I dumped&amp;nbsp; System.ServiceModel.Dispatcher.FlowThrottle type, and found 33 objects. &lt;/P&gt;
&lt;P&gt;&lt;EM&gt;0:025&amp;gt; !dumpheap -type System.ServiceModel.Dispatcher.FlowThrottle&lt;BR&gt;&lt;/EM&gt;Address&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Size&lt;BR&gt;00fe56f8 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;00fe57b4 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;0103bda8 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;0110cc74 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;0110cce4 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;0112ef04 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;01287bd0 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;01287c40 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;0129b290 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;012d6a94 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;012d6b04 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;012e57b0 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;01305bd8 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;01305c48 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;013114f4 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;0132886c 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;013288dc 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;01332840 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;01337950 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;013379c0 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;01357ba0 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;013e873c 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;013e87ac 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;013f4744 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;0150ebd8 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;0150ec48 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;01517d00 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;01523768 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;015237d8 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;01530948 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;015452b4 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;01545324 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;0154d508 50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;total 33 objects&lt;BR&gt;Statistics:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MT&amp;nbsp;&amp;nbsp;&amp;nbsp; Count&amp;nbsp;&amp;nbsp;&amp;nbsp; TotalSize Class Name&lt;BR&gt;50e49ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 33&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1188 System.ServiceModel.Dispatcher.FlowThrottle&lt;BR&gt;Total 33 objects 
&lt;P&gt;I was little curious to know why 33 objects are present for 11 endpoints. I checked the endpoint behavior at the server side : &lt;/P&gt;
&lt;P&gt;&amp;lt;behavior name="HermesServiceBehavior"&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;serviceMetadata /&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;serviceDebug includeExceptionDetailInFaults="true" /&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;serviceThrottling &lt;STRONG&gt;maxConcurrentCalls="64" &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; maxConcurrentSessions="64"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; maxConcurrentInstances="2147483647" /&amp;gt;&lt;BR&gt;&lt;/STRONG&gt;&amp;lt;/behavior&amp;gt; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So, it answers my question; each endpoint has the three throttle behaviors. =&amp;gt; 11*3= 33 FlowThrottles &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;My next step was to dump all these FlowThrottle&amp;nbsp; and check for any saturation.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;0.25&amp;gt; .foreach (name {!dumpheap -type System.ServiceModel.Dispatcher.FlowThrottle -short}) {.echo -------------; .echo name; !do name}&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;My formatted output looked like this:&lt;/P&gt;
&lt;P&gt;....................................................................&lt;/P&gt;
&lt;P&gt;....................................................................&lt;/P&gt;
&lt;P&gt;-------------&lt;BR&gt;01287bd0&lt;BR&gt;Name: System.ServiceModel.Dispatcher.FlowThrottle&lt;BR&gt;MethodTable: 50e49ffc&lt;BR&gt;EEClass: 50e49f8c&lt;BR&gt;Size: 36(0x24) bytes&lt;BR&gt;(C:\WINDOWS\assembly\GAC_MSIL\System.ServiceModel\3.0.0.0__b77a5c561934e089\System.ServiceModel.dll)&lt;BR&gt;Fields:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MT&amp;nbsp;&amp;nbsp;&amp;nbsp; Field&amp;nbsp;&amp;nbsp; Offset&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Type VT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Attr&amp;nbsp;&amp;nbsp;&amp;nbsp; Value Name&lt;BR&gt;790fdb60&amp;nbsp; 400327b&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 18&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Int32&amp;nbsp; 1 instance&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 64 capacity&lt;BR&gt;790fdb60&amp;nbsp; 400327c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Int32&amp;nbsp; 1 instance&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 count&lt;BR&gt;790f8a7c&amp;nbsp; 400327d&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Object&amp;nbsp; 0 instance 01287bf4 mutex&lt;BR&gt;791118a4&amp;nbsp; 400327e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8 ...ding.WaitCallback&amp;nbsp; 0 instance 01287bb0 release&lt;BR&gt;00000000&amp;nbsp; 400327f&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 instance 01287c00 waiters&lt;BR&gt;790f9244&amp;nbsp; 4003280&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.String&amp;nbsp; 0 instance 00fe565c propertyName&lt;BR&gt;790f9244&amp;nbsp; 4003281&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 14&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.String&amp;nbsp; 0 instance 00fe56a0 configName&lt;BR&gt;-------------&lt;BR&gt;&lt;STRONG&gt;&lt;FONT color=#0000ff&gt;01287c40&lt;/FONT&gt;&lt;/STRONG&gt;&lt;BR&gt;Name: System.ServiceModel.Dispatcher.FlowThrottle&lt;BR&gt;MethodTable: 50e49ffc&lt;BR&gt;EEClass: 50e49f8c&lt;BR&gt;Size: 36(0x24) bytes&lt;BR&gt;(C:\WINDOWS\assembly\GAC_MSIL\System.ServiceModel\3.0.0.0__b77a5c561934e089\System.ServiceModel.dll)&lt;BR&gt;Fields:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MT&amp;nbsp;&amp;nbsp;&amp;nbsp; Field&amp;nbsp;&amp;nbsp; Offset&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Type VT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Attr&amp;nbsp;&amp;nbsp;&amp;nbsp; Value Name&lt;BR&gt;&lt;STRONG&gt;790fdb60&amp;nbsp; 400327b&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 18&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Int32&amp;nbsp; 1 instance&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 64 capacity&lt;BR&gt;790fdb60&amp;nbsp; 400327c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Int32&amp;nbsp; 1 instance&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#ff0000&gt;64 count&lt;/FONT&gt;&lt;/STRONG&gt;&lt;BR&gt;790f8a7c&amp;nbsp; 400327d&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Object&amp;nbsp; 0 instance 01287c64 mutex&lt;BR&gt;791118a4&amp;nbsp; 400327e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8 ...ding.WaitCallback&amp;nbsp; 0 instance 01287c20 release&lt;BR&gt;00000000&amp;nbsp; 400327f&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 instance 01287c70 waiters&lt;BR&gt;790f9244&amp;nbsp; 4003280&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.String&amp;nbsp; 0 instance 00fe5620 propertyName&lt;BR&gt;790f9244&amp;nbsp; 4003281&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 14&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.String&amp;nbsp; 0 instance 00fe5758 configName&lt;BR&gt;-------------&lt;BR&gt;0129b290&lt;BR&gt;Name: System.ServiceModel.Dispatcher.FlowThrottle&lt;BR&gt;MethodTable: 50e49ffc&lt;BR&gt;EEClass: 50e49f8c&lt;BR&gt;Size: 36(0x24) bytes&lt;BR&gt;(C:\WINDOWS\assembly\GAC_MSIL\System.ServiceModel\3.0.0.0__b77a5c561934e089\System.ServiceModel.dll)&lt;BR&gt;Fields:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MT&amp;nbsp;&amp;nbsp;&amp;nbsp; Field&amp;nbsp;&amp;nbsp; Offset&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Type VT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Attr&amp;nbsp;&amp;nbsp;&amp;nbsp; Value Name&lt;BR&gt;790fdb60&amp;nbsp; 400327b&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 18&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Int32&amp;nbsp; 1 instance 2147483647 capacity&lt;BR&gt;790fdb60&amp;nbsp; 400327c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Int32&amp;nbsp; 1 instance&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 count&lt;BR&gt;790f8a7c&amp;nbsp; 400327d&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Object&amp;nbsp; 0 instance 0129b2b4 mutex&lt;BR&gt;791118a4&amp;nbsp; 400327e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8 ...ding.WaitCallback&amp;nbsp; 0 instance 0129b270 release&lt;BR&gt;00000000&amp;nbsp; 400327f&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 instance 0129b2c0 waiters&lt;BR&gt;790f9244&amp;nbsp; 4003280&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.String&amp;nbsp; 0 instance 0103bd48 propertyName&lt;BR&gt;790f9244&amp;nbsp; 4003281&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 14&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;P&gt;..................................................................................&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It was a great output, because of this text in RED. This proves that I was guessing on the right direction. There is actually one endpoint which has reached the throttle limit. &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But which endpoint is this, we have 11? &lt;/P&gt;
&lt;P&gt;Let's dump the related&amp;nbsp; ServiceHost type:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;0:025&amp;gt; !do 01287a34&lt;/EM&gt;&lt;BR&gt;01287a34&lt;BR&gt;Name: System.ServiceModel.ServiceHost&lt;BR&gt;MethodTable: 50e553e8&lt;BR&gt;EEClass: 50e55368&lt;BR&gt;Size: 136(0x88) bytes&lt;BR&gt;(C:\WINDOWS\assembly\GAC_MSIL\System.ServiceModel\3.0.0.0__b77a5c561934e089\System.ServiceModel.dll)&lt;BR&gt;Fields:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MT&amp;nbsp;&amp;nbsp;&amp;nbsp; Field&amp;nbsp;&amp;nbsp; Offset&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Type VT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Attr&amp;nbsp;&amp;nbsp;&amp;nbsp; Value Name&lt;BR&gt;79103c00&amp;nbsp; 4000915&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 28&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Boolean&amp;nbsp; 1 instance&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 aborted&lt;BR&gt;79103c00&amp;nbsp; 4000916&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 29&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Boolean&amp;nbsp; 1 instance&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 closeCalled&lt;BR&gt;.................................................................................................................&lt;/P&gt;
&lt;P&gt;.................................................................................................................&lt;BR&gt;&lt;STRONG&gt;50e04530&amp;nbsp; 4002be2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3c ...erviceDescription&amp;nbsp; 0 instance 01287cd0 description&lt;/STRONG&gt;&lt;BR&gt;00000000&amp;nbsp; 4002be3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 40&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 instance 01287b2c extensions&lt;BR&gt;00000000&amp;nbsp; 4002be4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 44&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 instance 012d6834 externalBaseAddresses&lt;BR&gt;00000000&amp;nbsp; 4002be5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 48&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 instance 01293a80 implementedContracts&lt;BR&gt;50e124c0&amp;nbsp; 4002be6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4c ...nceContextManager&amp;nbsp; 0 instance 01287b58 instances&lt;BR&gt;7910b5d8&amp;nbsp; 4002be7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.TimeSpan&amp;nbsp; 1 instance 01287aa0 openTimeout&lt;BR&gt;50df93e0&amp;nbsp; 4002be8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 50 ...rformanceCounters&amp;nbsp; 0 instance 01295ef4 servicePerformanceCounters&lt;BR&gt;50e1272c&amp;nbsp; 4002be9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 54 ...r.ServiceThrottle&amp;nbsp; 0 instance 01287b80 serviceThrottle&lt;BR&gt;50e321ac&amp;nbsp; 4002bea&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 58 ...erviceCredentials&amp;nbsp; 0 instance 00000000 readOnlyCredentials&lt;BR&gt;50e1f218&amp;nbsp; 4002beb&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5c ...orizationBehavior&amp;nbsp; 0 instance 012d67ec readOnlyAuthorization&lt;BR&gt;00000000&amp;nbsp; 4002bec&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 60&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 instance 00000000 UnknownMessageReceived&lt;BR&gt;7a751b00&amp;nbsp; 4002bdd&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 74c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Uri&amp;nbsp; 0&amp;nbsp;&amp;nbsp; static 00fe546c EmptyUri&lt;BR&gt;790f8a7c&amp;nbsp; 4003075&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 74&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Object&amp;nbsp; 0 instance 00000000 singletonInstance&lt;BR&gt;790ffe7c&amp;nbsp; 4003076&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 78&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Type&amp;nbsp; 0 instance 01057f28 serviceType&lt;BR&gt;50e62118&amp;nbsp; 4003077&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7c ...ontractCollection&amp;nbsp; 0 instance 01287e00 reflectedContracts&lt;BR&gt;7910b450&amp;nbsp; 4003078&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 80&amp;nbsp;&amp;nbsp; System.IDisposable&amp;nbsp; 0 instance 00000000 disposableInstance&lt;/P&gt;
&lt;P&gt;The name of the endpoint can be found in this &lt;STRONG&gt;ServiceDescription&lt;/STRONG&gt; 
&lt;P&gt;&lt;EM&gt;0:025&amp;gt; !do 01287cd0&lt;/EM&gt; &lt;BR&gt;Name: System.ServiceModel.Description.ServiceDescription&lt;BR&gt;MethodTable: 50e04530&lt;BR&gt;EEClass: 50e04478&lt;BR&gt;Size: 32(0x20) bytes&lt;BR&gt;(C:\WINDOWS\assembly\GAC_MSIL\System.ServiceModel\3.0.0.0__b77a5c561934e089\System.ServiceModel.dll)&lt;BR&gt;Fields:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MT&amp;nbsp;&amp;nbsp;&amp;nbsp; Field&amp;nbsp;&amp;nbsp; Offset&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Type VT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Attr&amp;nbsp;&amp;nbsp;&amp;nbsp; Value Name&lt;BR&gt;00000000&amp;nbsp; 400306f&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 instance 01287cf0 behaviors&lt;BR&gt;&lt;STRONG&gt;790f9244&amp;nbsp; 4003070&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.String&amp;nbsp; 0 instance 01287d9c configurationName&lt;/STRONG&gt;&lt;BR&gt;50dd0b68&amp;nbsp; 4003071&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c ...ndpointCollection&amp;nbsp; 0 instance 01287d28 endpoints&lt;BR&gt;790ffe7c&amp;nbsp; 4003072&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Type&amp;nbsp; 0 instance 01057f28 serviceType&lt;BR&gt;50dda3c4&amp;nbsp; 4003073&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 14 ...scription.XmlName&amp;nbsp; 0 instance 00000000 serviceName&lt;BR&gt;790f9244&amp;nbsp; 4003074&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 18&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.String&amp;nbsp; 0 instance 00fe7a2c serviceNamespace 
&lt;P&gt;It should be inside &lt;STRONG&gt;configurationName&lt;/STRONG&gt;. &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;EM&gt;0:025&amp;gt; !do 01287d9c &lt;BR&gt;&lt;/EM&gt;Name: System.String&lt;BR&gt;MethodTable: 790f9244&lt;BR&gt;EEClass: 790f91a4&lt;BR&gt;Size: 100(0x64) bytes&lt;BR&gt;(C:\WINDOWS\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll)&lt;BR&gt;String: **********.&lt;STRONG&gt;&lt;U&gt;********.&lt;FONT color=#800000&gt;ExternalService&lt;/FONT&gt;&lt;/U&gt;&lt;/STRONG&gt;&lt;BR&gt;Fields:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MT&amp;nbsp;&amp;nbsp;&amp;nbsp; Field&amp;nbsp;&amp;nbsp; Offset&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Type VT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Attr&amp;nbsp;&amp;nbsp;&amp;nbsp; Value Name&lt;BR&gt;790fdb60&amp;nbsp; 4000096&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Int32&amp;nbsp; 1 instance&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 42 m_arrayLength&lt;BR&gt;790fdb60&amp;nbsp; 4000097&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Int32&amp;nbsp; 1 instance&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 41 m_stringLength&lt;BR&gt;790fad38&amp;nbsp; 4000098&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Char&amp;nbsp; 1 instance&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4d m_firstChar&lt;BR&gt;790f9244&amp;nbsp; 4000099&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.String&amp;nbsp; 0&amp;nbsp;&amp;nbsp; shared&amp;nbsp;&amp;nbsp; static Empty&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;&amp;gt; Domain:Value&amp;nbsp; 001475b8:790d57b4 &amp;lt;&amp;lt;&lt;BR&gt;79122994&amp;nbsp; 400009a&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 14&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Char[]&amp;nbsp; 0&amp;nbsp;&amp;nbsp; shared&amp;nbsp;&amp;nbsp; static WhitespaceChars&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;&amp;gt; Domain:Value&amp;nbsp; 001475b8:00fc13f4 &amp;lt;&amp;lt; &lt;/P&gt;
&lt;P&gt;Here we go. The endpoint which is saturated with the max throttle limit is &lt;STRONG&gt;&lt;EM&gt;ExternalService&lt;/EM&gt;&lt;/STRONG&gt;. When the GUI launches it actually contacts this endpoint to get some data.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9226282" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/banibrata_de/archive/tags/winDBG/default.aspx">winDBG</category><category domain="http://blogs.msdn.com/banibrata_de/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/banibrata_de/archive/tags/flowthrottle/default.aspx">flowthrottle</category></item><item><title>IE8 developer toolbar: A step forward to measure RIA performance, a case study</title><link>http://blogs.msdn.com/banibrata_de/archive/2008/09/16/ie8-developer-toolbar-a-step-forward-to-measure-ria-performance-a-case-study.aspx</link><pubDate>Tue, 16 Sep 2008 17:54:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8953992</guid><dc:creator>bani</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/banibrata_de/comments/8953992.aspx</comments><wfw:commentRss>http://blogs.msdn.com/banibrata_de/commentrss.aspx?PostID=8953992</wfw:commentRss><description>&lt;P&gt;With the new wave of &lt;A href="http://en.wikipedia.org/wiki/Rich_Internet_application" target=_blank mce_href="http://en.wikipedia.org/wiki/Rich_Internet_application"&gt;&lt;STRONG&gt;RIA&lt;/STRONG&gt;&lt;/A&gt;, the applications are relying more on JavaScript for the rich user experience. The two key factors which influence the performance a.k.a end user experience are: JavaScript and the Client Processing Speed.&amp;nbsp; With a standard client processor, it is not very uncommon to find plateau of high CPU utilization on the client side for inefficient JavaScript rendering logic. &lt;/P&gt;
&lt;P&gt;To measure the time taken by JavaScript code at the client was a pain. Sometimes we used a tool, &lt;A href="http://research.microsoft.com/projects/ajaxview/" target=_blank mce_href="http://research.microsoft.com/projects/ajaxview/"&gt;&lt;STRONG&gt;AjaxView&lt;/STRONG&gt;&lt;/A&gt;, but it has it's own limitations (e.g. doesn't work with HTTPS, separately run a proxy and change the browser proxy etc.). In couple of my engagements where the site uses HTTPS , I preferred an age old method: counting the ticks from my wrist watch till the JavaScript rendering ends. But, with the arrival of IE8 developer tool, my life is too cool now form this perspective. I can profile, measure and support my findings with something solid on black and white. There is a good article from &lt;A href="http://msdn.microsoft.com/en-us/library/cc848895(VS.85).aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/cc848895(VS.85).aspx"&gt;MSDN&lt;/A&gt; which talks about it. &lt;/P&gt;
&lt;P&gt;For one of our customers we did the performance analysis of their website. Historically, whenever users click on a button on a particular page the CPU utilization at the client side reaches 100% and stays there for almost 2/3 minutes before users could do anything. On investigation we found two areas of improvement: 
&lt;UL&gt;
&lt;LI&gt;JavaScript&amp;nbsp; 
&lt;LI&gt;Network transfer &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;After sometime they claimed some of the issues had been fixed and the response time was improved. Though there were some improvements on the overall response time due to logic change in the network transfer, they did little to fix the JavaScript issue. To substantiate my claim I used &lt;STRONG&gt;Developers Tool&lt;/STRONG&gt; of IE8 Beta2. 
&lt;P&gt;The following steps I followed: 
&lt;OL&gt;
&lt;LI&gt;Open the website, go to the page where you suspect the event is present.&lt;/LI&gt;
&lt;LI&gt;Just before clicking on the problematic button(the scenario) launch &lt;STRONG&gt;Developer Tool&lt;/STRONG&gt; (press F12), &lt;/LI&gt;
&lt;LI&gt;From the &lt;STRONG&gt;Profiler &lt;/STRONG&gt;Tab&lt;STRONG&gt; &lt;/STRONG&gt;&amp;nbsp;&lt;B&gt;Start Profiling&lt;/B&gt;. &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/banibrata_de/WindowsLiveWriter/IE8toolbarAstepforwardtomeasureRIAperfor_FC4F/clip_image002%5B6%5D.jpg" mce_href="http://blogs.msdn.com/blogfiles/banibrata_de/WindowsLiveWriter/IE8toolbarAstepforwardtomeasureRIAperfor_FC4F/clip_image002%5B6%5D.jpg"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=143 alt=clip_image002[6] src="http://blogs.msdn.com/blogfiles/banibrata_de/WindowsLiveWriter/IE8toolbarAstepforwardtomeasureRIAperfor_FC4F/clip_image002%5B6%5D_thumb.jpg" width=683 border=0 mce_src="http://blogs.msdn.com/blogfiles/banibrata_de/WindowsLiveWriter/IE8toolbarAstepforwardtomeasureRIAperfor_FC4F/clip_image002%5B6%5D_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4.&amp;nbsp;&amp;nbsp; Wait till the page load finishes then &lt;B&gt;Stop Profiling. &lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/banibrata_de/WindowsLiveWriter/IE8toolbarAstepforwardtomeasureRIAperfor_FC4F/clip_image004_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/banibrata_de/WindowsLiveWriter/IE8toolbarAstepforwardtomeasureRIAperfor_FC4F/clip_image004_2.jpg"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=96 alt=clip_image004 src="http://blogs.msdn.com/blogfiles/banibrata_de/WindowsLiveWriter/IE8toolbarAstepforwardtomeasureRIAperfor_FC4F/clip_image004_thumb.jpg" width=685 border=0 mce_src="http://blogs.msdn.com/blogfiles/banibrata_de/WindowsLiveWriter/IE8toolbarAstepforwardtomeasureRIAperfor_FC4F/clip_image004_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Finally a very cool table as below was generated, which can be exported to an excel file. Here I looked for functions&amp;nbsp; with higher &lt;B&gt;Exclusive Time&lt;/B&gt;, (&lt;B&gt;Inclusive Time&lt;/B&gt; contains other timings spent inside(in case a function calling other functions, etc.)) 
&lt;P&gt;In my case I found this: 
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/banibrata_de/WindowsLiveWriter/IE8toolbarAstepforwardtomeasureRIAperfor_FC4F/clip_image002_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/banibrata_de/WindowsLiveWriter/IE8toolbarAstepforwardtomeasureRIAperfor_FC4F/clip_image002_2.jpg"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=487 alt=clip_image002 src="http://blogs.msdn.com/blogfiles/banibrata_de/WindowsLiveWriter/IE8toolbarAstepforwardtomeasureRIAperfor_FC4F/clip_image002_thumb.jpg" width=614 border=0 mce_src="http://blogs.msdn.com/blogfiles/banibrata_de/WindowsLiveWriter/IE8toolbarAstepforwardtomeasureRIAperfor_FC4F/clip_image002_thumb.jpg"&gt;&lt;/A&gt; 
&lt;P&gt;It indicates the JavaScript hotspots as the highlighted functions: &lt;B&gt;UpdateEntitlementLicenseKey&lt;/B&gt; (executed 157 times) and &lt;B&gt;OpenModal&lt;/B&gt;, overall it is consuming &lt;B&gt;17 seconds&lt;/B&gt; at the client machine. Moreover, during this transaction the CPU utilization reached 100% and stayed there for quite sometime.The &lt;STRONG&gt;time&lt;/STRONG&gt; reported here is based on my PC's hardware configuration, it could vary depending on the hardware configuration of the client machine. 
&lt;P&gt;So, now I have a reason to go back to the developers and show them where the&amp;nbsp; performance improvement is needed. Also developers can leverage the functionality of this cool profiler to identify the hotspots at the early stages of the development lifecycle to ensure end users' happiness. &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8953992" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/banibrata_de/archive/tags/performance/default.aspx">performance</category><category domain="http://blogs.msdn.com/banibrata_de/archive/tags/Ajax/default.aspx">Ajax</category><category domain="http://blogs.msdn.com/banibrata_de/archive/tags/javascript+performance/default.aspx">javascript performance</category><category domain="http://blogs.msdn.com/banibrata_de/archive/tags/Javascript+profilie/default.aspx">Javascript profilie</category></item><item><title>Processor spikes in the web server; find the rogue process/thread</title><link>http://blogs.msdn.com/banibrata_de/archive/2008/08/28/processor-spikes-in-the-web-server-find-the-rouge-process-thread.aspx</link><pubDate>Thu, 28 Aug 2008 12:52:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8903121</guid><dc:creator>bani</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/banibrata_de/comments/8903121.aspx</comments><wfw:commentRss>http://blogs.msdn.com/banibrata_de/commentrss.aspx?PostID=8903121</wfw:commentRss><description>&lt;P&gt;In one of my engagements, I was doing the load test of a WCF application.&amp;nbsp; I was using unit test for each of the scenario and mixed them together, to create the required workloads. In my case there were six scenarios. However, the interesting observation was that the load test results showed the system couldn't support more than 3 concurrent users, as the&amp;nbsp;web server processor was 100% utilized. The task manager shows HERMES.SERVICEHOST.EXE as the process name causing this outage.&amp;nbsp;I could have gone back to the app guys and told them "Hey look, this application sucks!', instead I took a different stand. With the help of much respected winDBG, I tried to analyze WHY the processor was so busy.&lt;/P&gt;
&lt;P&gt;Let's investigate into "WHY"&lt;/P&gt;
&lt;P&gt;My first step was to figure out which call/calls are heavy for the web server processor. Running each unit test individually, I found that out of 6 tests 3 tests are causing the problem, by showing the same pattern. I looked into the common set of service calls among these three tests, but I found many calls. However, I needed the exact call. So, I put break point on all the calls of a UNIT test and looked into the web server processor utilization with each F9 until I found the rogue call. It didn't take too long to find the evil. The Processor utilization reached around 80% and stayed there for almost 2 minutes.&lt;/P&gt;
&lt;P&gt;From my UNIT test the call looked like &lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000a0&gt;&lt;FONT color=#0000ff&gt;return dealClient.GenerateCps (localeId, .....................);&lt;/FONT&gt;&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;P&gt;I confirmed the same call was responsible for other tests also. Now it was time to get into the processor's skin and my option was WinDBG. &lt;/P&gt;
&lt;P&gt;I opened a command prompt from the web server debug directory, and typed this on (I didn't hit "ENTER" though)&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;adplus -hang -pn HERMES.SERVICEHOST.EXE -quiet&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Then I went back to the my unit test with the break point set at "&lt;FONT color=#0000a0&gt;return dealClient.GenerateCps (localeId, .....................);" &lt;/FONT&gt;&lt;FONT color=#000000&gt;and &lt;/FONT&gt;ran the test in debug mode and when it reached this line, I pressed F9. I checked that the web server processor had almost hit the roof. I waited for couple of seconds before&amp;nbsp;I hit the "ENTER" key from my earlier command prompt. Quietly it created the dump of the process in hang mode.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Who let the dogs out?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Let's spill the beans with &lt;FONT color=#0000a0&gt;&lt;FONT color=#000000&gt;winDBG. &amp;nbsp;I used these set of commands in sequence&amp;nbsp;.&lt;/FONT&gt;&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;0:000&amp;gt; .load sos.dll&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;.time&lt;/EM&gt; : to know the uptimes of the system and the process (HERMES.SERVICEHOST.EXE)&lt;/P&gt;
&lt;P&gt;0:000&amp;gt; .time&lt;BR&gt;Debug session time: Tue Jul 29 16:25:29.000 2008 (GMT+6)&lt;BR&gt;System Uptime: 9 days 3:37:40.437&lt;BR&gt;Process Uptime: 0 days 5:04:45.000&lt;BR&gt;&amp;nbsp; Kernel time: 0 days 1:40:55.000&lt;BR&gt;&amp;nbsp; User time: 0 days 0:01:06.000&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;!runaway:&lt;/EM&gt; to know which thread&amp;nbsp;was consuming processor time in USER mode. &lt;/P&gt;
&lt;P&gt;0:000&amp;gt; !runaway&lt;BR&gt;User Mode Time&lt;BR&gt;&amp;nbsp; Thread&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Time&lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;FONT color=#ff0000&gt;9:1ee8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:23:17.765&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; 3:318&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:01.218&lt;BR&gt;&amp;nbsp;&amp;nbsp; 2:1494&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.781&lt;BR&gt;&amp;nbsp; 16:1b24&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.062&lt;BR&gt;&amp;nbsp;&amp;nbsp; 0:1214&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.046&lt;BR&gt;&amp;nbsp; 21:1f1c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.031&lt;BR&gt;&amp;nbsp;&amp;nbsp; 8:1060&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.031&lt;BR&gt;&amp;nbsp; 14:1dec&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.015&lt;BR&gt;&amp;nbsp;&amp;nbsp; 5:1910&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.015&lt;BR&gt;&amp;nbsp; 20:29c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.000&lt;BR&gt;&amp;nbsp; 19:1bc0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.000&lt;BR&gt;&amp;nbsp; 18:112c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.000&lt;BR&gt;&amp;nbsp; 17:1c84&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.000&lt;BR&gt;&amp;nbsp; 15:1ca0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.000&lt;BR&gt;&amp;nbsp; 13:1c68&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.000&lt;BR&gt;&amp;nbsp; 12:1d60&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.000&lt;BR&gt;&amp;nbsp; 11:1c24&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.000&lt;BR&gt;&amp;nbsp; 10:185c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.000&lt;BR&gt;&amp;nbsp;&amp;nbsp; 7:1f30&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.000&lt;BR&gt;&amp;nbsp;&amp;nbsp; 6:1f90&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.000&lt;BR&gt;&amp;nbsp;&amp;nbsp; 4:1070&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.000&lt;BR&gt;&amp;nbsp;&amp;nbsp; 1:1330&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0:00:00.000&lt;/P&gt;
&lt;P&gt;The above output showed that the thread 9&amp;nbsp;in red had taken up the maximum time form the processor.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;Now let's switch into this thread number 9 to see "WHY".&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;0:000&amp;gt; ~9s&lt;BR&gt;eax=00000001 ebx=04d3ade0 ecx=0c851ec4 edx=0c851ee0 esi=0c851ec4 edi=00000004&lt;BR&gt;eip=073d127f esp=040ec544 ebp=040ec568 iopl=0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nv up ei pl nz na po nc&lt;BR&gt;cs=001b&amp;nbsp; ss=0023&amp;nbsp; ds=0023&amp;nbsp; es=0023&amp;nbsp; fs=003b&amp;nbsp; gs=0000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; efl=00000202&lt;BR&gt;073d127f 8bcf&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ecx,edi&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;!clrstack:&lt;/EM&gt; to see what was on the execution stack of this long running thread&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;0:009&amp;gt; !clrstack&lt;BR&gt;OS Thread Id: 0x1ee8 (9)&lt;BR&gt;ESP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EIP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&lt;FONT color=#004080&gt;&lt;EM&gt;040ec544 073d127f SoftArtisans.OfficeWriter.ExcelWriter.ᧀ.ᜄ(Int32)&lt;BR&gt;040ec570 0eef988f SoftArtisans.OfficeWriter.ExcelWriter.᠑.ᜂ()&lt;BR&gt;040ec594 0eef9669 SoftArtisans.OfficeWriter.ExcelWriter.ᩨ.ᜅ()&lt;BR&gt;040ec5a0 0eef95a1 SoftArtisans.OfficeWriter.ExcelWriter.ᩨ.ᜀ(SoftArtisans.OfficeWriter.ExcelWriter.ᢦ)&lt;BR&gt;040ec5cc 0eef954b SoftArtisans.OfficeWriter.ExcelWriter.ᩨ.ᜁ()&lt;BR&gt;040ec5d0 0eef951c SoftArtisans.OfficeWriter.ExcelWriter.៬.ᜀ(SoftArtisans.OfficeWriter.ExcelWriter.៬)&lt;BR&gt;040ec5dc 0eef92e6 SoftArtisans.OfficeWriter.ExcelWriter.៬.ᜀ()&lt;BR&gt;040ec5e8 0eef913f SoftArtisans.OfficeWriter.ExcelWriter.៘.ᜀ()&lt;BR&gt;040ec618 0eef90dd SoftArtisans.OfficeWriter.ExcelWriter.ᢥ.ᜁ(Int32)&lt;BR&gt;040ec624 0eef8e86 SoftArtisans.OfficeWriter.ExcelWriter.ᤩ.ᜀ(SoftArtisans.OfficeWriter.ExcelWriter.ᣊ, Int32, SoftArtisans.OfficeWriter.ExcelWriter.᤾)&lt;BR&gt;040ec66c 0eef8d27 SoftArtisans.OfficeWriter.ExcelWriter.ᤩ.ᜀ()&lt;BR&gt;040ec69c 0eef8cdb SoftArtisans.OfficeWriter.ExcelWriter.ឋ.ᜀ()&lt;BR&gt;040ec6a0 0eef8c59 SoftArtisans.OfficeWriter.ExcelWriter.ᨀ.ᜀ()&lt;/EM&gt;&lt;/FONT&gt;&lt;BR&gt;040ec6d4 0740bcf1 MS.IT.Ops.Hermes.DataAccessObjects.GenerateCpsDAO.AssignProductInformation(System.Data.DataView, SoftArtisans.OfficeWriter.ExcelWriter.Worksheet, Int32 ByRef, System.Decimal ByRef, System.Data.DataTable, SoftArtisans.OfficeWriter.ExcelWriter.Palette, System.String, System.Globalization.CultureInfo)&lt;BR&gt;040ec7cc 0aeb6c65 MS.IT.Ops.Hermes.DataAccessObjects.GenerateCpsDAO.GenerateCps(Int32, Int32, System.String, System.String, System.String, MS.IT.Ops.Hermes.DataTransferObjects.CPSData, System.String, MS.IT.Ops.Hermes.DataTransferObjects.ProposalEntity, MS.IT.Ops.Hermes.DataTransferObjects.CPSDomainData, System.String, Boolean, Boolean, System.DateTime, Boolean, MS.IT.Ops.Hermes.DataTransferObjects.Footer, Boolean)&lt;BR&gt;040eed34 08407fc5 MS.IT.Ops.Hermes.BusinessComponents.Deal.GenerateCps(Int32, Int32, System.String, System.String, System.String, MS.IT.Ops.Hermes.DataTransferObjects.CPSData, System.String, MS.IT.Ops.Hermes.DataTransferObjects.ProposalEntity, MS.IT.Ops.Hermes.DataTransferObjects.CPSDomainData, System.String, Boolean, Boolean, System.DateTime, Boolean, MS.IT.Ops.Hermes.DataTransferObjects.Footer, Boolean)&lt;BR&gt;040eed88 0464b34e MS.IT.Ops.Hermes.BusinessFacade.DealFacade.GenerateCps(System.String, System.String, MS.IT.Ops.Hermes.DataTransferObjects.ProposalEntity, Boolean, System.String, Int32, Int32, System.String, Boolean, System.DateTime, Boolean, MS.IT.Ops.Hermes.DataTransferObjects.Footer, Boolean)&lt;BR&gt;040eee88 04649e6e MS.IT.Ops.Hermes.Services.DealService.MS.IT.Ops.Hermes.Services.IDeal.GenerateCps(Int32, System.String, System.String, MS.IT.Ops.Hermes.DataTransferObjects.ProposalEntity, Boolean, Boolean, System.String, Boolean, Boolean)&lt;BR&gt;040eef7c 0822900c DynamicClass.SyncInvokeGenerateCps(System.Object, System.Object[], System.Object[])&lt;BR&gt;040eefb8 50b09ede System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(System.Object, System.Object[], System.Object[] ByRef)&lt;BR&gt;040ef030 50aeaff3 System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(System.ServiceModel.Dispatcher.MessageRpc ByRef)&lt;BR&gt;040ef07c 508ad430 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(System.ServiceModel.Dispatcher.MessageRpc ByRef)&lt;BR&gt;040ef0bc 508ad286 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(System.ServiceModel.Dispatcher.MessageRpc ByRef)&lt;BR&gt;040ef0e8 508ad1f3 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(System.ServiceModel.Dispatcher.MessageRpc ByRef)&lt;BR&gt;040ef0f8 508ad039 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(System.ServiceModel.Dispatcher.MessageRpc ByRef)&lt;BR&gt;040ef108 508ac281 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(System.ServiceModel.Dispatcher.MessageRpc ByRef)&lt;BR&gt;040ef12c 508abfaf System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean)&lt;BR&gt;040ef170 508ab8a4 System.ServiceModel.Dispatcher.ChannelHandler.DispatchAndReleasePump(System.ServiceModel.Channels.RequestContext, Boolean, System.ServiceModel.OperationContext)&lt;BR&gt;040ef31c 508a9e22 System.ServiceModel.Dispatcher.ChannelHandler.HandleRequest(System.ServiceModel.Channels.RequestContext, System.ServiceModel.OperationContext)&lt;BR&gt;040ef360 508a98ee System.ServiceModel.Dispatcher.ChannelHandler.AsyncMessagePump(System.IAsyncResult)&lt;BR&gt;040ef374 508a9881 System.ServiceModel.Dispatcher.ChannelHandler.OnAsyncReceiveComplete(System.IAsyncResult)&lt;BR&gt;040ef380 50212c98 System.ServiceModel.Diagnostics.Utility+AsyncThunk.UnhandledExceptionFrame(System.IAsyncResult)&lt;BR&gt;040ef3ac 5089f211 System.ServiceModel.AsyncResult.Complete(Boolean)&lt;BR&gt;040ef3e8 508a963c System.ServiceModel.Channels.FramingDuplexSessionChannel+TryReceiveAsyncResult.OnReceive(System.IAsyncResult)&lt;BR&gt;040ef418 50212c98 System.ServiceModel.Diagnostics.Utility+AsyncThunk.UnhandledExceptionFrame(System.IAsyncResult)&lt;BR&gt;040ef444 5089f211 System.ServiceModel.AsyncResult.Complete(Boolean)&lt;BR&gt;040ef480 508a93e1 System.ServiceModel.Channels.SynchronizedMessageSource+ReceiveAsyncResult.OnReceiveComplete(System.Object)&lt;BR&gt;040ef4ac 508a55fd System.ServiceModel.Channels.SessionConnectionReader.OnAsyncReadComplete(System.Object)&lt;BR&gt;040ef4ec 508cffa2 System.ServiceModel.Channels.StreamConnection.OnRead(System.IAsyncResult)&lt;BR&gt;040ef4f8 50212c98 System.ServiceModel.Diagnostics.Utility+AsyncThunk.UnhandledExceptionFrame(System.IAsyncResult)&lt;BR&gt;040ef524 5089f211 System.ServiceModel.AsyncResult.Complete(Boolean)&lt;BR&gt;040ef560 508cf689 System.ServiceModel.Channels.ConnectionStream+ReadAsyncResult.OnAsyncReadComplete(System.Object)&lt;BR&gt;040ef58c 50901c29 System.ServiceModel.Channels.SocketConnection.FinishRead()&lt;BR&gt;040ef594 50901afb System.ServiceModel.Channels.SocketConnection.AsyncReadCallback(Boolean, Int32, Int32)&lt;BR&gt;040ef5d8 5089efe8 System.ServiceModel.Channels.OverlappedContext.CompleteCallback(UInt32, UInt32, System.Threading.NativeOverlapped*)&lt;BR&gt;040ef5f0 50212d9f System.ServiceModel.Diagnostics.Utility+IOCompletionThunk.UnhandledExceptionFrame(UInt32, UInt32, System.Threading.NativeOverlapped*)&lt;BR&gt;040ef624 793d6140 System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32, UInt32, System.Threading.NativeOverlapped*)&lt;BR&gt;040ef7c8 79e7be1b [GCFrame: 040ef7c8] &lt;/P&gt;
&lt;P&gt;And BINGO! it is actually generating a file with ExcelWriter, which is very expensive in terms of processor utilization. Later, I talked with the application team and they confirmed it. &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8903121" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/banibrata_de/archive/tags/winDBG/default.aspx">winDBG</category><category domain="http://blogs.msdn.com/banibrata_de/archive/tags/High+Processor+Utilization/default.aspx">High Processor Utilization</category><category domain="http://blogs.msdn.com/banibrata_de/archive/tags/High+CPU+Utilization/default.aspx">High CPU Utilization</category><category domain="http://blogs.msdn.com/banibrata_de/archive/tags/.NET+application+debugging/default.aspx">.NET application debugging</category></item><item><title>Ajax, behind the scene, is everything optimized?</title><link>http://blogs.msdn.com/banibrata_de/archive/2008/07/16/ajax-behind-the-scene-is-everything-optimized.aspx</link><pubDate>Wed, 16 Jul 2008 06:31:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8736691</guid><dc:creator>bani</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/banibrata_de/comments/8736691.aspx</comments><wfw:commentRss>http://blogs.msdn.com/banibrata_de/commentrss.aspx?PostID=8736691</wfw:commentRss><description>&lt;P&gt;Out of curiosity I was toying with Http Professional 5.2 and some high performance web sites which use Ajax. Incidentally, I tried Google's &lt;A title=http://www.google.com/webhp?complete=1&amp;amp;hl=en href="http://www.google.com/webhp?complete=1&amp;amp;hl=en" mce_href="http://www.google.com/webhp?complete=1&amp;amp;hl=en"&gt;http://www.google.com/webhp?complete=1&amp;amp;hl=en&lt;/A&gt;. and found something interesting. &lt;/P&gt;
&lt;P&gt;This&amp;nbsp;feature is cool as it guides the users to search for particular strings (Fig. 1), by pre-fetching possible matches from the back end. &lt;/P&gt;
&lt;P&gt;I started, HttpWatch Professional 5.2, from my IE 7.0 and captured the following screen shots. My intention was to search for a term which will show some valid results once I hit the search button. So, I thought of starting with my first name "banibrata". &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Google suggest&lt;/STRONG&gt; is a very good user experience. I started with "b", it gave me many suggestions (Fig 1), and my HttpWatch registered a network call to the back end (Fig 2). The call looked like: &lt;A title=http://www.google.com/complete/search?hl=en&amp;amp;client=suggest&amp;amp;js=true&amp;amp;q=b&amp;amp;cp=1 href="http://www.google.com/complete/search?hl=en&amp;amp;client=suggest&amp;amp;js=true&amp;amp;q=b&amp;amp;cp=1"&gt;http://www.google.com/complete/search?hl=en&amp;amp;client=suggest&amp;amp;js=true&amp;amp;q=b&amp;amp;cp=1&lt;/A&gt;. As I&amp;nbsp;went on typing "a", "n", "i", it made similar calls and I got the suggestions almost instantly. But once I typed "banib", it&amp;nbsp;seemed, I had reached the end of Google suggest's wit. I kept on typing until I complete my first name : "banibrata".&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Observation&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;HttpWatch showed, even though Google stopped suggesting me, it made the same asynchronous call to the back end for each letter I typed "banib" onwards, which no result, for these requests (Fig 3 and Fig 4). &lt;/P&gt;
&lt;P&gt;Though from an end user's stand point this doesn't affect the performance, from the over all system perspective, it is making a network round trip for each letter, which doesn't make sense here. &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/banibrata_de/WindowsLiveWriter/Ajaxbehindthesceneiseverythingoptimized_7EBD/image_10.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=135 alt=image src="http://blogs.msdn.com/blogfiles/banibrata_de/WindowsLiveWriter/Ajaxbehindthesceneiseverythingoptimized_7EBD/image_thumb_4.png" width=244 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Fig. 1&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/banibrata_de/WindowsLiveWriter/Ajaxbehindthesceneiseverythingoptimized_7EBD/image_14.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=121 alt=image src="http://blogs.msdn.com/blogfiles/banibrata_de/WindowsLiveWriter/Ajaxbehindthesceneiseverythingoptimized_7EBD/image_thumb_6.png" width=244 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Fig. 2&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;A href="http://blogs.msdn.com/blogfiles/banibrata_de/WindowsLiveWriter/Ajaxbehindthesceneiseverythingoptimized_7EBD/image_18.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=114 alt=image src="http://blogs.msdn.com/blogfiles/banibrata_de/WindowsLiveWriter/Ajaxbehindthesceneiseverythingoptimized_7EBD/image_thumb_8.png" width=244 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Fig. 3&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/banibrata_de/WindowsLiveWriter/Ajaxbehindthesceneiseverythingoptimized_7EBD/image_20.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=118 alt=image src="http://blogs.msdn.com/blogfiles/banibrata_de/WindowsLiveWriter/Ajaxbehindthesceneiseverythingoptimized_7EBD/image_thumb_9.png" width=244 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Fig. 4&lt;/P&gt;
&lt;P mce_keep="true"&gt;Are these calls required?&amp;nbsp; This is just adding to network round trips, though from the end-users perspective it doesn't matter, it has a performance overhead, whatever little it may seem. The logic can be modified in such a way that once the suggestion from the back end stops, typing forward will not result a call to the back end.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8736691" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/banibrata_de/archive/tags/performance/default.aspx">performance</category><category domain="http://blogs.msdn.com/banibrata_de/archive/tags/google+suggest/default.aspx">google suggest</category><category domain="http://blogs.msdn.com/banibrata_de/archive/tags/Ajax/default.aspx">Ajax</category><category domain="http://blogs.msdn.com/banibrata_de/archive/tags/network+round+trip/default.aspx">network round trip</category></item></channel></rss>