Executive Summary:
The Windows Indexing Service can help you quickly search through files, but problems can arise that can make Windows XP Professional and other Windows operating systems sluggish and even hang. The Microsoft Management Console (MMC) Indexing Service snap-in can help you troubleshoot the problem. Microsoft Customer Service and Support (CSS) offers three solutions if the problem lies with master merges.
|
In my Reader To Reader article "Create an MMC Snap-In for Searching PDF Files"
(March 2007, InstantDoc ID 94950), I expounded on the virtues of using Windows'
Indexing Service to quickly search through mounds of files, including .pdf,
.doc, .mht, .html, and .txt files. I might have jinxed myself because after
I wrote that article, I began experiencing performance problems on my Windows
XP Professional machine, which currently indexes about 6,700 files. When I attempted
to open Microsoft Office files from the Windows desktop or Windows Explorer,
my computer would sometimes hang for two to three minutes. (Interestingly, the
computer didn't hang when I opened files from their native applications, such
as Microsoft Word or Microsoft Excel.) The computer would also hang when I tried
to do a file search from within Windows Explorer. However, I found that if I
stopped the Indexing Service, my computer didn't hang. Leaving the Indexing
Service disabled wasn't an option for me, so I'd restart the Indexing Service.
Shortly thereafter (sometimes as soon as an hour later), my computer would start
hanging again.
I used the custom Microsoft Management Console (MMC) snap-in
that I created (see "Create an MMC
Snap-In for Searching PDF Files") to
monitor activities within the Indexing
Service. The Indexing Service is supposed to throttle back when you're
using the computer, but I noticed that
when my computer was hanging, not
all of the Indexing Service catalogs
were in the Paused, User Activity state.
To correct the problem, I attempted to tune the Indexing Service through the
MMC Indexing Service snap-in. After stopping the Indexing Service, I right-clicked
Indexing Service on Local Machine, chose All Tasks, then selected Tune
Performance. In the Indexing Service Usage dialog box, I selected the Used Occasionally
option, which sets indexing to Lazy and querying to Low load. After
closing the Indexing Service snap-in, I restarted the Indexing Service. It wasn't
long before I discovered that this change didn't stop my machine from hanging.
I decided to dig a little deeper into how the Indexing Service works. I learned
that the service creates temporary working catalogs as part of its normal daily
operations. A temporary working catalog consists of word lists and saved indexes.
When the Indexing Service indexes a document, the index information first goes
into a temporary word list. When the Indexing Service stores an index on disk,
it's placed in a temporary saved index. Periodically, the Indexing Service merges
each catalog's word lists and stored indexes into a permanent master index,
after which it deletes all the word lists and deletes all but one of the stored
indexes.
You can see how many words lists and saved indexes exist for a catalog at any
point in time by clicking Indexing Service on Local Machine in the Indexing
Service snap-in and looking at the Word Lists and Saved Indexes columns, which
Figure 1 shows, in the catalog summary in the right pane. In Figure
1, note the zeros in the third catalog's Word Lists and Saved Indexes columns.
If you set a particular catalog's Include in Index? option to No, these
columns will always contain zeros.
After periodically checking the catalog summary for several days, I
noticed that the number of word lists and saved indexes for my various catalogs
never went down but rather increased each day. Apparently, the word lists and
stored indexes weren't being merged into master indexes.
As an interim solution, I forced each catalog to do a master merge by opening
the Indexing Service snap-in, right-clicking a catalog, then selecting All Tasks,
Merge. After a short period of time, the numbers in the Word Lists column dropped
to zero and the numbers in the Saved Indexes column dropped to one, as Figure
2 shows. More important, my computer didn't hang any more.
To permanently fix the hanging problem, I had to determine why my catalogs
weren't getting a master merge. An investigation led me to the Main Registry
Entries Web page (http://msdn2.microsoft.com/enus/library/ms692119.aspx),
which is part of the Indexing Service section in the Platform SDK. From this
Web page, I learned about a registry entry named MasterMerge-Time, which is
under the HKEY_ LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Control\ContentIndex
key. The MasterMergeTime entry's value specifies the time (represented as the
number of minutes after midnight) at which a master merge will occur. The range
of values is 0 through 1439. The default value is 0, which means that the master
merge will occur exactly at midnight.
After I read about the MasterMergeTime
entry, I had my suspicion about what might
be wrong. When I checked with Microsoft
Customer Service and Support (CSS), a support engineer confirmed my suspicion: If a
machine isn't powered up when the master
merge is scheduled to take place, the master
merge won't occur. In addition, the support
engineer told me that master merges also
automatically occur after a certain number of
documents have been indexed and when disk
space gets low. And as the number of word
lists and saved indexes increase, the computer's performance degrades.
The support engineer noted that I had three options to stop my machine from
hanging:
-
Disable the Indexing Service.
-
Change the MasterMergeTime value to a time of day when the machine is powered
up and can handle the extra CPU overhead brought about by the master merge.
-
Manually force a master merge for each catalog at regular intervals.
Disabling the Indexing Service wasn't an option for me. Manually forcing master
merges for each catalog would be too time-consuming. So, I opted to change the
MasterMergeTime value. Since I changed the value to a time of day when the PC
is running but idle, I haven't had any more problems with my machine hanging
because of the Indexing Service.
I also learned one other helpful tip from the support engineer. By default,
XP Pro creates catalog indexes for two locations: the My Documents folder and
the default IIS site. Typically, the catalog for the My Documents folder is
at C:\System Volume Information\catalog.wci, whereas the catalog for the IIS
site is at C:\Inetpub\ catalog.wci. If you want to run the Indexing Service
because you need it for some special directories you have, but you don't need
the ability to search the My Documents folder and the default IIS site for text
strings, you can take one of two actions:
-
Not recommended: In the Indexing Service snap-in, delete the catalogs for
the default locations.
-
Recommended: In the Indexing Service snapin, expand the catalog's Directories
folder in the left pane. In the right pane, double-click each directory,
which brings up a dialog box that has the odd name of Add Directory. In
this dialog box, change the Include in Index? option from Yes to
No. If you want to recover disk space after this change, you can force a
master merge on that particular catalog. Note that although you can stop
the indexing of a particular catalog by right-clicking the catalog in the
left pane and selecting Stop, this action only temporarily stops the indexing.
The indexing of that catalog will resume the next time the Indexing Service
is started manually or the machine boots up (assuming the Indexing Service
is set to the default startup setting of Automatic).
If your computer hangs or has other performance problems when you're opening
or searching for files, you might want to use the Indexing Service snap-in to
monitor your catalogs. If the numbers in the Word Lists and Saved Indexes columns
for your catalogs never go down, you likely have a problem with master merges.
—Bret Bennett, President, BRET A. BENNETT
See Associated Figure
End of Article