Search code examples
artifactoryjfrog-clijfrog-xrayjfrog-container-registryjfrog-pipelines

How to scale Artifactory for 2000-3000 users?


I have to design a public-facing Artifactory in such a way that at one time 2000-3000, Devs/DevOps might run their operations on it. And, if it increases more then it might have to scale smoothly. I am not sure how to get started with this but the max that I have seen is 100 people accessing my JFrog server.

Currently, I am exploring JFrog, but, do we have more options? Can anyone share their experience with respect to this?


Solution

  • When it comes to Artifactory (or any other application server), tuning it for optimal performance has to be performed in stages. This means we need to make a change and observe the behavior for some time and then re-tune it. For your use case of 3K users, I would recommend the following changes:

    1. JVM heap size - Make sure to have at least 16G max heap (XMX)
    2. Increase the tomcat threads - system.yaml change - 600
    3. Increase the access threads - system.yaml change - 300. We might need to reconsider this value depending on the authentication mechanism. If it is anonymous access 300 should suffice.
    4. Database - The recommendations above are applicable only for the case of external databases (Postgres is recommended) where Artifactory should have at least 400 connections to make. For this load, internal Derby is not a good option

    Note: The Artifactory performance will differ by the load it is receiving or the repository type it is working hence the above changes are based on the general use case.

    In addition to that you might want to take a look at these articles which would help fine-tune the Artifactory (and Nginx if applicable)