How are the data loads being done? Java front end app with a JDBC connector?
We had issues with a datastore that is also used for reporting that had some horrible code used to do inserts ( looping through millions of records to find duplicates for each insert ) that was taking huge amounts of time to process and the reporting was, as you say, experiencing timeouts and connectivity problems.
Find out what is beating up your server, CPU or I/O.
If it's cpu chances are that there is some code that needs to be tweeked or some indexes to be added.
If it's I/O...might want to think about adding a staging table on a separate set of disks and inserting the data into the real tables off hours.
A combination of code rewrites and additional indexes brought the load times from 24+ hrs to 4hrs. Be warry that more indexes can slow down updates..but this should get you on the right track
Work smarter not harder.