ARTIFACTORY: Isolating Artifactory performance issues on the network
When experiencing slow downloads, uploads, or other network related issues, there are steps that can be taken to help isolate where an issue might be occurring.
The network diagram for an Artifactory environment may look like this:
In the diagram above:
- Incoming connections will first go through the load balancer.
- The connection will then be routed to the reverse proxy, port 80 or port 443.
- The reverse proxy / Load Balancer will route the connection to the Router microservice (port 8082) or the Artifactory microservice (port 8081) if the path in the URL starts with “/artifactory”.
To start isolating where latency or network errors are occurring, we can use timed curl commands (time curl …) or other types of client applications to test uploads, downloads, or other types of requests from different places and through different services to start isolating performance issues:
|Test the load balancer IP or URL||https://<load_balancer_url>/artifactory/<artifact path>|
|Test the reverse proxy while bypassing LB (reverse proxy is on the same machine as Artifactory)||https://<artifactory_server_url>:443/artifactory/<artifact path>
|Test upload/download through reverse proxy from localhost||https://localhost:443/artifactory/<artifact path>
|Direct upload/download to Artifactory bypassing reverse proxy and LB||http://<artifactory_server_url>:8081/artifactory/<artifact path>|
|Test Artifactory from localhost||http://localhost:8081/artifactory/<artifact path>|
If the Artifactory deployment is in a different network than the client making the request, we can also test uploads/downloads from the backend of another Artifactory server connecting to another Artifactory server in the cluster, or from any other type of server in the same fast LAN as Artifactory.
Please reference this wiki for examples of uploading and downloading artifacts when using Artifactory.
Once we isolate where the issue is occurring, we can then focus on investigating the service that is causing the performance issue and tune it if needed. Here are some helpful JFrog tuning and debugging guides:
- How do I tune Artifactory for heavy loads?
- What is the recommended Hardware for Artifactory?
- How to improve Artifactory UI speed? Why is my Artifactory UI slow?
- How to Tune Nginx with Artifactory for Heavy Loads
- Why Large Repository Push Replications Can Fail
- How to analyze Artifactory logs in case of issues