Have you tried the
$|=1?
I suspect this has got something todo with the timing of events (are these 2 machines different hardware or do they have a different workload?). The webserver delivery might be done at a time where the archiving/tempfile-creation is not totally finished. I don't know your code and modules you are using, so this is only a guess.
In that case you might also try, as a debugging tool, to add some 'sleep'-commands inbetween the tempfile-creation/archive-creation and delivery via the webserver, and see if that changes the behaviour.
Maybe you could also post the relevant piece of your code, fresh eyes can help a lot.