Have you seen an increase in print spooler crashes on your Windows 2003 or 2008 Print Server lately? I think we were all hoping that 2008 R2 would be an improvement, but it looks like it's more of the same. I get calls that users can't print, and when I investigate, I find the spooler service stopped, and errors in the event log indicate that there was an application error in spoolsv.exe. Searching for answers on the web, I find that neither Microsoft nor the printer manufacturers have much to say about it.
ITAdminTools now offers SpoolWatch - the print spooler auto-restart utility. SpoolWatch is a Windows service that watches the print spooler, and automatically restarts it within seconds of a spooler crash, which will minimize the impact of the crash on your users.
There are certainly bugs in Microsoft's code from time to time, so the first order of business is to patch your print server. However, I see the same problem on Windows 2003 and 2008, so I suspect that it's not so much a problem with the OS as a print driver problem. Obvious right?
Device drivers in general are a common cause of server crashes. If your server is experiencing blue screens, assuming that you don't have faulty hardware, and you're patches are up to date, then the cause is likely a device driver, such as a NIC or disk controller driver. Where most servers rely on a handful of hardware drivers to be stable, print servers often have many print drivers installed that can cause stability problems. So the next obvious step in solving print spooler crashes is to update all of the print drivers.
|Figure 1 - Setting Print Driver Isolation|
Windows Server 2008 R2 introduces print driver isolation. Normally, the print drivers all run in the same process as the spooler, so when a driver crashes, it crashes the spooler. Print driver isolation runs each driver in a separate process, potentially sparing the spooler when the driver crashes. This doesn't solve all spooler crashes, but it can help. To enable isolation, open the print management GUI, connect to your print server, and open the drivers page. Right click on each driver, and select Set Driver Isolation - Isolated, as shown in figure 1.
Replacing Print Drivers
If you've isolated your drivers and you still have spooler crashes, you can try to systematically replace each driver with a newer version, or perhaps an older version, to see if that helps. I've found that the recent HP Universal print drivers and especially the Xerox Global print drivers seem to be problematic. I've had pretty good luck replacing those drivers with model-specific drivers. For example, replace the HP universal driver with an HP Laserjet 4700 driver (if that's the correct model). If model-specific Vista or Windows 7 drivers are unavailable, try using the XP drivers instead.