Browse by Tags

Tagged Content List
  • Blog Post: Capturing a profile in production based on ETW events

    ETW has many uses. Filtering allows you to get only the events you want and an out-of-process consumer can listen for those filtered events. ETW can also be used for profiling native and managed code. It can sample stacks and mark context switches. That data can be combined with other ETW providers such...
  • Blog Post: The server rejected the session-establishment request

    Here is an interesting WCF exception you may have encountered before. In my case we were looking into a performance issue for a client. Environment This setup is pretty common. A set of load-balanced web servers is talking to a load-balanced WCF middle tier. The middle tier interacts with the...
  • Blog Post: Azure Remote PowerShell

    This post is about how I created a utility that allows me to send PowerShell commands to a specific Azure instance without the need to publicly expose a port or use Azure Connect. First, I think I should explain why I did this. In performance analysis, the more information you can capture, the...
  • Blog Post: Azure table storage WCF custom transport channel

    Previous posts covered how to make a custom WCF transport channel that used the file system as the transport mechanism. This post covers how to use Azure tables as the transport. The full code is available here: https://github.com/dmetzgar/azure-table-transport The genesis of this transport channel...
  • Blog Post: Adding application config for custom transport channel

    The custom transport channel has been configured in code only so far. In order to make it configurable via app/web.config, there are a few additions required. This post covers how to add those. Click here to see all the posts in this series. All the code is now available on github here: https://github...
  • Blog Post: Custom WCF Transport Channel Part 2

    In the previous post, I simply gathered the code for creating a custom WCF transport channel from Nicholas Allen's blog and updated it for .Net 4.0. The sample is a good start but the client and service code is a bit contrived. They are written specifically to avoid asynchronous code paths. You will...
  • Blog Post: An updated custom WCF transport channel example

    Nicholas Allen has an excellent series of blog posts on how to create a WCF transport channel. The last post in the series has links to all the previous posts: http://blogs.msdn.com/b/drnick/archive/2006/05/08/592110.aspx Click here to see all the posts in this series. All the code is now available...
  • Blog Post: Request threading in ASP.NET and WCF

    From the perspective of a WCF developer, the interaction between WCF and ASP.NET can be a black box. But to understand the performance of a system, it is necessary to know how all the components interact. This post covers how threads work when a request is sent to a WCF service hosted in IIS. This...
  • Blog Post: IIS Express saved my presentation

    Our team just got back from a fun trip to Portland, OR to attend the Portland Code Camp . Glenn Block did a great job of putting this together and it was an exciting opportunity to meet developers outside of the Microsoft bubble. A fairly large group of us from the AppFabric/WCF/WF team were able to...
  • Blog Post: Silverlight and WCF Web API Preview 4

    The WCF Web API is a pretty exciting new offering from our team. The simplicity of creating and consuming a service is quite compelling. Especially considering that you can take advantage of the infrastructure surrounding HTTP and the web. One of the shortcomings though is the lack of Silverlight support...
  • Blog Post: WCF scales up slowly with bursts of work

    A few customers have noticed an issue with WCF scaling up when handling a burst of requests. Fortunately, there is a very simple workaround for this problem that is covered in KB2538826 (thanks to David Lamb for the investigation and write up). The KB article provides a lot of good information about...
  • Blog Post: Automatic Decompression in WCF

    WCF services that are hosted in IIS can take advantage of compression without making any special encoder changes . In Windows Server 2008 R2, IIS compression is actually turned on by default and WCF as of .Net 4.0 supports decompression by default. So if you've got a WCF web-hosted service on a W2K8R2...
  • Blog Post: Server too busy exception

    The "Server too busy" error is a common one that causes a lot of confusion when related to WCF. It is possible for WCF to respond with a server too busy fault when a quota is exceeded in the security layer. However you wouldn't get this when you hit a WCF throttle limit. Server too busy typically comes...
  • Blog Post: Protocol Buffers and WCF

    WCF performance has many aspects. In the previous series I explored how using GZip/Deflate compression can increase performance in areas with low network latency. However, the penalty is that the CPU utilization is much higher. Therefore, it does not apply to many people's situations. Instead of compressing...
  • Blog Post: Compressing messages in WCF part four - Network performance

    The aim of compressing the messages sent from a WCF service is to reduce the amount of traffic on the wire. You could be doing this because you're in a hosted environment such as a cloud service and you have to pay for bandwidth. The tradeoff for compression is an increase in CPU usage. In this post...
  • Blog Post: Compressing messages in WCF part three - Performance analysis

    In this post, I will run a client and service with the GZipMessageEncoder on the same machine and analyze the performance. The WCF sample application for GZipMessageEncoder has been suitable up until now for functional testing. For performance testing, I will be using a harness we commonly use for...
  • Blog Post: Compressing messages in WCF part two - Expanding the GZipMessageEncoder and fixing another bug

    The GZipMessageEncoder is a great sample for learning about MessageEncoders in general. In this post, I will expand the GZipMessageEncoder to do both GZip and Deflate compression. This will accomplish two things: (1) explain various pieces of a MessageEncoder and (2) set a groundwork for future posts...
  • Blog Post: Compressing messages in WCF part one - Fixing the GZipMessageEncoder bug

    The compression options for WCF out of the box are limited in .Net 4.0. However, a sample is provided for GZip compression that shows you how to write your own MessageEncoder that can wrap the output of another encoder and apply GZip to the messages. If your environment has a network bandwidth limitation...
  • Blog Post: StreamUpgradeProvider

    The StreamUpgradeProvider in WCF is not a well-known extension point. Nicholas Allen has a great set of blog posts describing how to use this. You can start reading that with this post: http://blogs.msdn.com/b/drnick/archive/2006/09/07/stream-upgrades_2c00_-part-1.aspx I recently spent some time trying...
  • Blog Post: Checking a dump file for WCF throttles

    The ServiceModel performance counters can tell you how many concurrent calls, instances, and sessions you have. In .Net 4.0, more counters were added to tell you how close you are to the throttles for each of those categories. So if you're trying to performance tune an application, those performance...
  • Blog Post: Slow AppFabric demo part two

    In the previous article, we began analyzing the first portion of the timeline, which is where IIS starts up the process. In this, I pointed out that 16% of the sampled time was spent in page faults. Sampling does not always give us the whole story though. If the process is switched out, then samples...
  • Blog Post: Slow AppFabric demo part one

    Back in the early days of AppFabric, when it was still just Dublin and Velocity, a demo was given to the management team that started with a simple xamlx workflow. You can probably imagine the concern as a room full of managers silently waited for this very simple workflow to come up. The reports vary...
  • Blog Post: First async call from WCF client always takes more than 1 second

    This is one of the first issues I got to investigate on the WCF/WF performance team. Customers reported that (in .Net 3.5 and earlier), the first asynchronous call from a WCF client was taking over 1 second each time, even with synchronous calls happening before it. The problem can be easily reproduced...
  • Blog Post: WCF bug with WS-AtomicTransaction expiration value

    The team at Microsoft that handles WCF and WF also handles Transactions. This includes System.Transactions, DTC, and the WS-AtomicTransaction implementation available in WCF. Not too long ago I got a chance to diagnose a pretty strange customer issue. The customer reported getting the following exception...
Page 1 of 1 (24 items)