It might be a network problem. To test, make a script which calls getNetworkStats on the server, and records bytesReceived,bytesSent and packetlossLastSecond (along with the exact time) to a file/database. Then when a mass timeout occurs, check the values from 10 seconds before the timeouts.
If bytesReceived drops, and packetlossLastSecond rises, it could be a network stall.