On Thursday, October 23, 2014 10:27:46 PM UTC-4, MartinFick wrote:I have some questions about practices that I was hoping someof the folks with larger installations might be willing toshare with the community to help bring the Scalingpage up-to-date.For example:
* Who is using DB replication? Which DB (which replicationtype)?
* Which java gc collector settings have you found to be most useful?
* Are there known scalability issues not mentioned on this page?
* What is your biggest current scalability issue?
But also, I have some sizing questions:* Does anyone have over 20 slaves for the same master? Over 30? More?
* Anyone have a lot more than 20K projects? How many?
* Anyone have a lot more than 500GB in repo data? How much?
* Anyone have a lot more than 1M changes? How many?
* Anyone have more than 500K refs in a single repo? How many more?
* How many receive-packs in a day does your master get?
* How many hooks does your server run per day?
* What is your largest repository size on disk?
Thanks for the great info!
----"Bassem Rabil" <bassem.ra...@ericsson.com> wrote:
>
> Recently we faced some issues with changes with large number of lines
> diff,
> i.e. in range of millions of diff lines. Of course Gerrit is not supposed
> to handle such changes for review, but in some cases such changes consume
> lots of resources to get and display such huge diff. We think that the
> server should treat such changes differently to avoid abusing the server
> resources.
So just to clarify, these problems are mainly in the UI, or are there
other areas that this affects? I will try to add something about this to
the page.
>> * What is your biggest current scalability issue?
>>
> - Repositories with large number of references, which slows down any
> operation towards such repositories
I am a bit surprised that 120K refs is causing issues. We have one repo
with ~400K refs, and it isn't a speed daemon, but it works reasonably
well. How slow are we talking? I wonder if you could benefit from this
jgit patch: https://git.eclipse.org/r/#/c/24295/ ? If it helps, it will
mention it on the scaling page.
> - Repositories with large size, i.e. 30-40 GB.
Any thoughts on this? What specific problems are you running into. Just
slow downloads (due to the amount of data being transferred), or are there
other issues?
>> But also, I have some sizing questions:
>>
>> * Does anyone have over 20 slaves for the same master? Over 30? More?
>>
> We have 7 slave instances with total up to 15 slave backends
This sounds like you are sharing the storage for some of your slaves. How
are you managing gc/repacking on these shared backends? I would like to
add some suggestions to the Scaling page on what to do for this. Are you
using Gerrit gc, or git gc on them? Do you just have one of the slaves on
the shared back end configured to run gc, or do you try to load balance
this somehow? We have a script with per repo server locks which helps
load balance this across all the slaves on the back end. This also helps
ensure that it will get done eve n if slaves are added/removed.
>For git operations at least, you can use https instead already. The REST
>api makes many other operations available over http,
Interesting solution.
Certainly would make this simple. Different masters can easily write to the same Zookeeper cluster to have their events mixed together.
That might be overkill as some message queue systems may be cheaper to run, but may also give you less reliable delivery semantics.
After EclipseCon Europe I am thinking about an MQTT system to push events, as JSON topics are fairly common and the brokers are able to push the stuff around easily.
But we may need to run a lock server like Zookeeper anyway so one less dependency is very appealing.
It really depends on the use case, there is no general
approach. We attack each use case that is a problem for us.
Which specific use case are you trying to improve? What are
the stats for that use case?
Can you give some stats on what slow means?