Microsoft KB Archive/906977

= BUG: You experience slow performance when ISAPI applications and CGI applications that are hosted on Internet Information Services 6.0 send responses =

Article ID: 906977

Article Last Modified on 12/3/2007

-

APPLIES TO

 Microsoft Internet Information Services 6.0, when used with:  Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)

 Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)

 Microsoft Windows Server 2003, Standard Edition (32-bit x86)

 Microsoft Windows Server 2003 Service Pack 1</li></ul> </li></ul>

-

<div class="notice_section">

<div class="notice_section">

Important This article contains information about how to modify the registry. Make sure to back up the registry before you modify it. Make sure that you know how to restore the registry if a problem occurs. For more information about how to back up, restore, and modify the registry, click the following article number to view the article in the Microsoft Knowledge Base:

256986 Description of the Microsoft Windows registry

<div class="symptoms_section">

SYMPTOMS
You experience slow performance when Inetrnet Server Application Programming Interface(ISAPI) applications or Common Gateway Interface (CGI) applications that are hosted on Microsoft Internet Information Services (IIS) 6.0 send responses.

You do not experience this issue when ISAPI applications or CGI applications that are hosted on Microsoft Internet Information Services (IIS) 5.0 send responses.

<div class="cause_section">

CAUSE
This issue occurs because of the default buffer size for sends that go through the HttpSendHttpResponse API. These include responses sent from ISAPI applications and from CGI applications hosted in IIS 6.0 that make small but frequent sends.

<div class="resolution_section">

RESOLUTION
Warning Serious problems might occur if you modify the registry incorrectly by using Registry Editor or by using another method. These problems might require that you reinstall your operating system. Microsoft cannot guarantee that these problems can be solved. Modify the registry at your own risk.

To resolve this issue, add the MaxBufferedSendBytes entry to the registry. To add the MaxBufferedSendBytes entry to the registry, follow these steps: <ol> Click Start, click Run, type Regedit, and then click OK.</li> Locate and then click the following registry key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters

</li> Right-click Parameters, point to New, and then click DWORD Value.</li> Type MaxBufferedSendBytes, and then press ENTER.</li> Right-click MaxBufferedSendBytes, and then click Modify.</li> In the Value data box, type 65536, and then click OK.</li> Quit Registry Editor.</li> Click Start, click Run, type cmd, and then click OK.</li> At the command prompt, type net stop http .</li> At the command prompt, type iisreset /restart .</li></ol>

Note To resolve this issue by using these steps, you must have Microsoft Windows Server 2003 Service Pack 1 installed.

<div class="status_section">

STATUS
Microsoft has confirmed that this is a bug in the Microsoft products that are listed in the &quot;Applies to&quot; section.

<div class="moreinformation_section">

MORE INFORMATION
The default buffer size in IIS 6.0 causes the HTTP protocol stack (HTTP.sys) to frequently send responses and to send responses in packets that do not use the maximum segment size. For example, if the maximum segment size is 1,460 bytes, you may see trace information that is similar to the following in Network Monitor:

<pre class="fixed_text">TCP: Control Bits: .A...., len: 1460, seq: 806718019-806719479, ack:1984105268, win:65459, src:  80  dst: 2032 TCP: Control Bits: .AP..., len: 588, seq: 806719479-806720067, ack:1984105268, win:65459, src:   80  dst: 2032 TCP: Control Bits: .AP..., len: 1024, seq: 806720067-806721091, ack:1984105268, win:65459, src:  80  dst: 2032

Because the data packets are small and are frequently sent, this issue is more noticeable because of network latency. This issue may be less noticeable in an intranet environment.

The default value for the MaxBufferedSendBytes entry is 8,192 bytes. When you set the value for the MaxBufferedSendBytes entry to 64 kilobytes, HTTP.sys sends packets that use the maximum segment size.

Note This change increases kernel NonPagedPool memory usage.

<div class="references_section">