Today we again had massive performance problems on the web server for several hours. Now it is fixed in a way that sounds strange, but makes sense when you think about it.
Some facts: We had 45795291 hits on the web server (file accesses like html files, images etc) in the whole month of june. Of these 8505586 hits access the update.txt - the file PDFCreator checks if it wants to see if there is a new version. This makes more than 3 update.txt requests per second, if they were fired with a constant rate. Practically, we get up to about 50 hits per second.
During the last performance problems, we have set the KeepAliveTimeout (the time client may reuse a http connection) very low to free the slots for other users. We had allowed 150 Clients at the same time, which is the apache default. As the server had to swap memory to the hard disk, which is factor 1 million slower to read. So we have reduced this number to 50, which limits the number of concurrent apache instances and thus the memory requirements. So we can server more users at (virtually) the same time by serving less at the same time.
The lesson learned today: Check how much ram one apache process takes and only use as many instances as memory allows.