I have a Windows 2003 SP2 print server. There are over 100 print queues setup on the server. The server has 4 GB RAM and two processors. I receive complaints that printing becomes very slow, sometimes jobs take up to 15 minutes to print. If I reboot the server, that clears it up for about a week. then it starts all over again. Any suggestions on how to improve performance?
Are you seeing anything odd in the Event Log? Based on your description I'm immediately suspicious of kernel memory (paged or non-paged pool) exhaustion.
I'd take a look at the Performance Analysis of Logs tool as a way to get some general feeling for where the bottleneck lies with this issue. This tool "ingests" Counter Log files gathered by "Performance Monitor" and produces various reports for different server workloads. For you, I'd consider running the "SystemOverview" PAL threshold file to get a general feeling for the issue's cause. (The PAL tool can export a Performance Monitor template that will direct you as to what counters to store in the log file. If you're not familiar with Performance Monitor the PAL site has some good training items about PAL and logging.)
I strongly suspect a run of PAL with log data gathered from a clean boot up to the issue occurring will give you an indication of the cause of the issue.
Without more data, any answers are going to be little more than groping around in the dark. As suggested, gather information from perfmon and/or the event logs. Post them here, and someone might be able to provide you with an accurate answer based on analysis, rather than guessing.
I would also suggest, however, that instead of rebooting the machine, next time, restart the print spooler. I've seen that work the majority of the time as a workaround while the root cause is uncovered, and it's probably preferable to bouncing the whole VM each time. (It would also help somewhat narrow down the scope of where to look for answers, should restarting the spooler service be as effective as a reboot.)