Scaling to handle more traffic
scaling http traffic
In case for bigger setups docker-compose can scale more rhodecode/vcsserver workers: Adjust the .custom/docker-compose-apps.override.yaml file and change replicas: NUM
services: rhodecode: deploy: # set number of instances of services to be spawned on stack start replicas: 4 vcsserver: deploy: # set number of instances of services to be spawned on stack start replicas: 4
Generally replicas of vcsserver and rhodecode should be equal, but each replica should have workers=N directive set to workers=2 for rhodecode workers=3 for vcsserver.
Then scale docker replicas without any downtime using this command
./rcstack stack rhodecode up --detach --no-recreate --scale rhodecode=4 --scale vcsserver=4
scaling ssh traffic
ssh workers can scale independently from the http traffic handled by rhodecode/vcsserver. To scale for more ssh traffic, increase replicas for sshd service
services: sshd: deploy: # set number of instances of services to be spawned on stack start replicas: 4
scaling celery workers
celery workers can scale independently from the http traffic handled by rhodecode/vcsserver. To scale for more celery task processing capabilities, increase replicas for celery service.
celery: sshd: deploy: # set number of instances of services to be spawned on stack start replicas: 4
Note
Celery already has an autoscaler defined by the command argument called "--autoscale=20,2". This means that there are min of 2 processes per worker that can scale upto 20 if there are more tasks to process. Scaling replicas means the maximum task processing capacity would be defined by replicas * maximum autoscale number.