It's certainly possible that you're getting periodic, heavy "spurts" of traffic - it's not really that difficult to exceed the allowed number of concurrent mysql connections. The mysql default is 151 concurrent connections (your host may well have a much lower limit), and connections are _not_ immediately available to be re-opened as soon as they're closed.
I'm sure you already follow some of these suggestions:
1. only use as many connections per page as necessary. if at all possible, shoot for only one connection per user http request.
2. as soon as you're sure you won't need the connection anymore, explicitly close it.
3. if you're still having problems, you might look at caching your more common SQL query results (therefore, preventing the need for the queries, and closing the connection earlier (or possibly, removing the need for a connection to be opened at all)). use a caching extension (adodb, for example) or write your own functions if you don't need such a heavy solution.
Take a look at the traffic records for your site and see if heavy traffic really is what you're up against.
Edit: changed caching extension recommendation
Bookmarks