DOCUMENT:Q165815 08-APR-2002 [winnt] TITLE :How to Troubleshoot Event ID 2009 Errors PRODUCT :Microsoft Windows NT PROD/VER::2000,3.51,4.0 OPER/SYS: KEYWORDS:kbnetwork ====================================================================== ------------------------------------------------------------------------------- The information in this article applies to: - Microsoft Windows NT Workstation versions 3.51, 4.0 - Microsoft Windows NT Server versions 3.51, 4.0 - Microsoft Windows 2000 Server ------------------------------------------------------------------------------- IMPORTANT: This article contains information about editing the registry. Before you edit the registry, make sure you understand how to restore it if a problem occurs. For information about how to do this, view the "Restoring Registry" Help topic in Regedit.exe or the "Restoring a Registry Key" Help topic in Regedt32.exe. SUMMARY ======= There are several ways to resolve the problems indicated by finding the following error logged in the System event log: Event Id: 2009 Source: Srv Description: The server could not expand a table because the table reached the maximum size. MORE INFORMATION ================ The Server service generates this error message when one of its internal tables in memory is full and cannot be expanded. These internal tables track active sessions, resource connections, open files, and open searches so this error message can be generated by many possible problems. To increase the size of an existing table, a new block of memory is allocated to hold the existing table space plus the increased table space. The old table is then copied into this new block of memory and the old table space is freed back to the operating system. For instance, the existing file handle table has 1000 entries and needs to grow by an additional 10 entries. The operating system first allocates enough memory for a new table of size 1010 entries. The old table of 1000 entries is then copied to this new table. After the table has been copied, the old table of 1000 entries is freed back to the operating system. However during the course of growing the existing table, enough memory has to exist to handle 2010 total entries which can exceed the amount of available memory, generating a 2009 server error. In cases where this problem does not generate a 2009 error, a single table may have attempted to exceed the maximum limit allowed in which case the service specific error code may pinpoint the cause. To determine which problem is responsible for generating the error, examine the Data section of the Event Detail dialog box for the error code parameter. In the following example, the error code is the final group (000003ea): 0000: 00040000 00540001 00000000 c00007d9 0010: 00000000 c000009a 00000000 00000000 0020: 00000000 00000000 000003ea The 11th DWORD at 0x28 is the actual Server service-specific error code. In the example above, the error code is 0x000003ea, but the error code varies depending on the Server service error. Compare the following error code examples to your error codes to determine the cause of the event: Error: 0x3e9 (SRV_TABLE_FILE) ----------------------------- This indicates that no more file IDs (FIDs) can be allocated to process the various open file server message blocks (SMBs) because of a shortage of available FIDs. 1. Monitor these performance monitor counters: Server\Files Open - Currently Open Files Server\Files Open Total - Total of open files since system startup. The maximum number of Open files per Session cannot exceed 2048. 2. Start the Control Panel Server tool, and then click Users. 3. Examine each user listed in the connected users column; the number of open files is displayed on a per-user basis in the opens column. -or- Open a command prompt and type the following command from the server to save a list of open files. NET FILE > FILE.TXT This command saves a file with a list of all open files and their associated FIDs. The example below is sample output from the NET FILES command: ID Path User name # Locks ------------------------------------------------------------------ 25 C:\acadflat user1 0 31 C:\acadflat\setup.exe user1 0 35 C:\ACADFLAT\ACAD.PER user1 0 69 C:\acadflat user1 0 70 C:\ACADFLAT\ACAD.MNX user1 0 Error: 0x3ea (SRV_TABLE_SEARCH) ------------------------------- This error indicates that memory is allocated for Search, Find, and Transact2_FindFirst SMB calls to store the current search state, but no additional memory could be allocated for storing search buffers. Applications that do not or cannot use the CloseSearch SMB (DOS applications or older applications that do not, make WIN32 calls) do not have a method for closing searches after they complete. In order to handle this situation, the LanmanServer service uses several search time parameters to clear the search handle and reclaim the memory allocated to the search buffers. To change the search time parameters, perform the following steps: WARNING: Using Registry Editor incorrectly can cause serious problems that may require you to reinstall your operating system. Microsoft cannot guarantee that problems resulting from the incorrect use of Registry Editor can be solved. Use Registry Editor at your own risk. For information about how to edit the registry, view the "Changing Keys And Values" Help topic in Registry Editor (Regedit.exe) or the "Add and Delete Information in the Registry" and "Edit Registry Data" Help topics in Regedt32.exe. Note that you should back up the registry before you edit it. 1. Start Registry Editor (Regedt32.exe) and go to the following subkey: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters 2. Add or check the following values: MaxGlobalOpenSearch: REG_DWORD MaxKeepSearch: REG_DWORD MinKeepSearch: REG_DWORD The MaxGlobalOpenSearch value determines the maximum number of open searches allowed by the LanmanServer service. The default value is 4096 with a maximum value of 65536. To allocate more search handles, increase the value of the MaxGlobalOpenSearch value to 16,000 (decimal). The MaxKeepSearch value determines the maximum amount of time in seconds that a search will remain open. The default value is 1800 seconds. Decrease the value of MaxKeepSearch to 900 seconds (15 minutes). The MinKeepSearch value determines the minimum amount of time in seconds that a search will remain open. The default value is 480 seconds. Decrease the value of MinKeepSearch to 240 seconds (4 minutes). 3. Monitor these performance monitor counters: Server\File Directory Searches Memory\Pool Paged Bytes Server Work Queues\Available Work Items 4. Check the value of the PagedPoolSize parameter in the following system registry key. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\MemoryManagement NOTE: The above registry key is one path; it has been wrapped for readability. The PagedPoolSize parameter should be set to 0x0. This allows Windows NT to dynamically calculate the size for Paged Pool memory. Error: 0x3eb (SRV_TABLE_SESSION) -------------------------------- This indicates that no more user IDs (UIDs) exist to satisfy this BlockingSessionSetupAndX SMB. 1. Monitor these performance monitor counters: Redirector\Server sessions Redirector\Server sessions hung 2. To help eliminate this problem, check for unneeded user sessions on the server. This may include mapped drives in logon scripts or applications that automatically map drives to particular servers. Error: 0x3ec (SRV_TABLE_TREE_CONNECT) ------------------------------------- This indicates that no more free tree IDs (TIDs) exist to satisfy a TreeConnect SMB. 1. Monitor these performance monitor counters: Redirector\Connects Core Redirector\Connects Lan Manager 2.0 Redirector\Connects Lan Manager 2.1 Redirector\Connects Windows NT 2. If the problem persists, consider moving frequently accessed data to another server. This should help lower the number of active Tree Connections to a particular server. NOTE: If you are using Windows NT 4 Terminal Server Edition, the following Microsoft Knowledge Base article may help resolve this problem: Q190162 Terminal Server and the 2048 Open File Limitation Server Communications Limits ---------------------------- For Windows 2000 Client to Windows 2000 Server communications the limit is 16384. For Legacy Clients to Windows 2000 Server communications the limit is 8192. For all Clients to Windows NT 4.0 Server communications the limit is 2048. Additional query words: srv ====================================================================== Keywords : kbnetwork Technology : kbWinNTsearch kbWinNTWsearch kbWinNTW400 kbWinNTW400search kbWinNT351search kbWinNT400search kbWinNTW351search kbWinNTW351 kbwin2000Serv kbWinNTSsearch kbWinNTS400search kbWinNTS400 kbWinNTS351 kbwin2000ServSearch kbwin2000Search kbWinNTS351search Version : :2000,3.51,4.0 Hardware : x86 Issue type : kbhowto ============================================================================= THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY. Copyright Microsoft Corporation 2002.