I’m currently testing RhodeCode as a solution to manage SVN repositories and after some testing I find that commit with multiple small files takes longer than expected.
To give more infos, I’m using HTTPS to do the commit and I compare the speed versus a simple apache/svn setup on an another instance with the same specs. During the tests, except looking at grafana, the commit is the only request running.
Doing the same commit on the simple apache / svn server took 5x less time to complete.
I’ve already tried doubling the specs of the instance and it didn’t help much. I can see in Grafana that the instance is mostly sleeping while doing the commit.
Do you have any insight what could cause this and how I could tweak the configuration of RhodeCode to help with this?
Do you think that I should try doing the same commit using SSH?
Also, do you have any documentation on how to setup SSH commits with rcstack ?
there should be a slight overhead when using SVN over http. But not 5x.
THe overhead comes from the fact that each SVN request needs to be IP checked/Authenticated/Permission checked
What authentication method do you use? I think we can tune some stuff to make it much faster.
I’ve tried changing the Auth Cache TTL from 30 to 10 for the Rhodecode internal and Rhodecode token plugin and it doesn’t seem to change the speed. I’ve also tried to restart all the stack.
For my test I commit ~1900 files with a total size of 13MB.
On the simple apache / svn server it takes almost a minute but for rhode it takes around 7 minutes.
I’m using Tortoise SVN on PC to do the commit for both servers.
Here’s some stats from the Rhodecode Grafana during the commit:
Instance CPU and system load is at around 30%
This is weird: I see ~ 250 login-ok but also ~250 login-fail per minute.
Around 1800 VCS Server Request per minute.
For the configuration of the stack I’m using “4.28.0.REL.2023.04.05.1” and except the repository volume location, https certificate and enabling only https entry points, I have mostly all the default settings.
For the Rhode instance I’ve tried attaching to the svn container but couldn’t find the svn/svnadmin executable. I’m using RhodeCode version : “4.28.0.REL.2023.04.05.1”.
Basically this overhead is there for a reason that each call to RhodeCode on svn commit is validated like a git push command. It means there’s a slight ~100ms overhead for each call. If you multiply this by 1900 files, this adds a big delay.
But this is an overhead that allows us to add file-permissions and proper hooks support in SVN in a similar way like they work in GIT.