How heavy are your DB queries, i.e. how long does it take to service a request for the main page? If you have 100 users hitting the page every 10 seconds on an auto-refresh, and it takes 3 seconds to connect, run the query, and render the page, then this will explain the 30 instances of perl.
Open your task manager, click on the CPU title column to sort by descending CPU usage. Let it run for a while, and check to see that your PIDs are churning over. If any seem to be hanging around for more than a few seconds, try to find out what they are doing (even something as crude as logging a message with the start/stop times, script name, and parameters for each transaction might give you a pointer). Do any of them have excessive amounts of memory allocated to them?
Who's doing all the CPU? Is it IIS, one or all of the multifarious perl instances, or MySQL?
Once you have a handle on where the resources are being consumed, you are in a much better position to pin it down further. Do you have a while loop that polls waiting for something to happen? Can you make it event-driven instead, or maybe increase the sleep time? Maybe your users are being lazy, causing a query with a dodgy LIKE clause to scan the whole table on each refresh?
Maybe you need a new/different index on the table?
Until you can identify the CPU hog, all this is just speculation - but if you get any more info, please post it, as I'm sure we can help
Steve
[small]"Every program can be reduced by one instruction, and every program has at least one bug. Therefore, any program can be reduced to one instruction which doesn't work."
(Object:
erlDesignPatterns)[/small]