When multiple users(about 10-15) simultaneously created archives load on the server increasing to critical level (near 100%) :(.
I think pressure is created when working archive gzip.
What to do?
gzip uses 0% compression or make static files with translation.
Comments
Comment #1
brmassa commentedVasili,
I agree with you.
Gabor.
it might be needed to implement a cache system for translation files. It saves them while no changes on translations. But its a trade off between disk space and processing power.
regards,
massa
Comment #2
gábor hojtsyYes, we will certainly need static file based caching on drupal.org as well. The server eats enough resources alone. The only downside of course is that if someone updates a widely used string such as "Home", then a huge percentage of the tarballs will need to be updated which takes considerable computing power.
Comment #3
brmassa commentedGabor,
yep. But instead updating the tarballs on every string update, i suggest to only create them when a user tries to download it. It wont consume too much resources like this.
So, the server can check if the tarball is up-to-date on 2 occasions (it checks if any string was translated later than the tarball creation):
1* when the user tries to download it.
2* when the user updates a translation
the (1) has the advantage that we can delete only the wanted tarball instead trying to delete all tarballs that are not up to date. Also the (2) is very costy because it will be just too frequent.
regards,
massa
Comment #4
pvasili commentedbrmassa - I think, the problem is not as simple... :(
may use the 0% compression gzip?
Comment #5
gábor hojtsybrmassa: If we'd check for file outdatedness when the user tries to download them, then we need to serve each download through Drupal, which is not the best recipe for performance IMHO. What we could do is to have new tarballs of translations when there are changes, and let the client somehow find out about that there is a new tarball (eg. link to the new one from the interface). That would keep older versions. We might not want to do this on every string change of course, but possibly let translations do "translation releases" instead. And then even, as you say, we should not generate all tarballs at once, but only on user request (eg. the 404 generator model).
Comment #6
brmassa commentedGábor,
sounds good. i just pointed the general logic so this solution is good too coz avoid the server to generate the Gettext files every time.
A note: would be good to see, in the future, a module like "Update status" for translations. So the server must be capable to tell sites the current translation status and a link for downloading them.
regards,
massa
Comment #7
andypostSuppose it's a good idea to make a page with listing already generated files with timestamp.
Most of users prefer to download static file (maybe different host)
Next on cron run check modifications and mark files as outdated
When user tries to generate new export just add check for existing file - it brings some performance
Comment #8
pvasili commentedI think we should have the stats (#320047: Count number of exports) download modules. Popular projects needed to keep static.
Comment #9
meba commentedI think we can close this one as most of the performance issues are handled elsewhere and d.org integration is already done>
Comment #10
tobiasbComment #11
gábor hojtsyNothing to review here but we need to implement file generation / packaging anyway. See http://www.reyero.net/en/node/178 for some ideas.
Comment #12
gábor hojtsyRetitled to this effect.
Comment #13
gábor hojtsyThis was handled in #594570: Packaging module for l.d.o (l10n_packager).