A while ago I wrote an article around how to handle the situation that the CRMAsyncService is consuming 99 to 100% of the CPU of the CRM Server. That solution has been written around the scenario that there are basically no workflows running. Obviously, there is the possibility as well that the amount of workflows is causing such behavior.
CRM is tested to be capable of handling thousands of active workflows. This of course does require a minimum set of hardware. If you are having a heavy load on the CRMASyncService due to the amount of workflows in combination with a relatively small server, then you'll need to change default settings of CRM to make sure that your system will remain active.
The default settings for workflow are set to a minimum of 1000 active workflows and maximum 2000 active workflows. This is fine for a system of at least 8GB ram, preferably even more. If you are running a server with for instance 4GB ram, then you should consider lowering these settings. Experience has learned that a setting of 100 for the minimum and 200 for the maximum setting is a good setting for a 4GB server. The server then isn't busy all the time with looking at too many workflows which causes timeouts, but instead only looks at a few and is able to finish these workflows in time.
Here's a small SQL script which you can run on your server to change this setting.
UPDATE DeploymentProperties SET IntColumn=100 where ColumnName = 'AsyncItemsInMemoryLow'
UPDATE DeploymentProperties SET IntColumn=200 where ColumnName = 'AsyncItemsInMemoryHigh'