Microsoft KB Archive/906977

From BetaArchive Wiki
Knowledge Base


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




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


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.

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.

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:

  1. Click Start, click Run, type Regedit, and then click OK.
  2. Locate and then click the following registry key:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters

  3. Right-click Parameters, point to New, and then click DWORD Value.
  4. Type MaxBufferedSendBytes, and then press ENTER.
  5. Right-click MaxBufferedSendBytes, and then click Modify.
  6. In the Value data box, type 65536, and then click OK.
  7. Quit Registry Editor.
  8. Click Start, click Run, type cmd, and then click OK.
  9. At the command prompt, type net stop http.
  10. At the command prompt, type iisreset /restart.

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

STATUS

Microsoft has confirmed that this is a bug in the Microsoft products that are listed in the "Applies to" 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:

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.

REFERENCES

For more information about performance issues in IIS 6.0 when you send HTTP data responses through the WriteClient API, click the following article number to view the article in the Microsoft Knowledge Base:

840875 BUG: IIS 6.0 is slower than IIS 5.0 when you use the WriteClient API to send data


For more information about performance issues when you use a Windows Sockets API program to copy data to a TCP server, click the following article number to view the article in the Microsoft Knowledge Base:

823764 Slow performance occurs when you copy data to a TCP server by using a Windows Sockets API program



Additional query words: MSS

Keywords: kbregistry kbtshoot kbbug kbprb KB906977