What can be causing a slow republish?


We are in the process of upgrading Sitecore from version 8.1 to 8.2 and we have managed to upgrade all our environments except production. 
We have a limited deploy window for 7 hours, so as part of the release planning we have tried to do a full republish of our production 8.1 site so we know how long time it will take, so we will not exceed our deploy window.

We have 3 publishing targets: Web, SQL01 and SQL02.

The full republish took over 4.5 hours to get somewhat through.

Can it really be correct that a publish to 3 targets (with around 300.000 items) will take this long? Can you come up with some ideas as to why the publish takes this long? 

Do you have any tips on how to performance monitor the publish?

Thanks in advance.