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

brmassa’s picture

Vasili,

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

gábor hojtsy’s picture

Yes, 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.

brmassa’s picture

Gabor,

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

pvasili’s picture

brmassa - I think, the problem is not as simple... :(
may use the 0% compression gzip?

gábor hojtsy’s picture

brmassa: 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).

brmassa’s picture

Gá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

andypost’s picture

Suppose 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

pvasili’s picture

I think we should have the stats (#320047: Count number of exports) download modules. Popular projects needed to keep static.

meba’s picture

Status: Active » Needs review

I think we can close this one as most of the performance issues are handled elsewhere and d.org integration is already done>

tobiasb’s picture

Version: 5.x-1.x-dev » 6.x-1.x-dev
gábor hojtsy’s picture

Status: Needs review » Active

Nothing to review here but we need to implement file generation / packaging anyway. See http://www.reyero.net/en/node/178 for some ideas.

gábor hojtsy’s picture

Title: Large server load » Packaging (or at least static file output) for translations

Retitled to this effect.

gábor hojtsy’s picture

Status: Active » Closed (duplicate)