Timeouts in JFrog Artifactory Server:

ARTIFACTORY: How to Resolve Artifactory Timeouts

AuthorFullName__c
Vaibhav Jain
articleNumber
000005782
ft:sourceType
Salesforce
FirstPublishedDate
2023-06-13T07:17:13Z
lastModifiedDate
2023-06-13
VersionNumber
1
Usecase1: Timeout occurring while downloading a package from an external site – this can occur on any of the following devices involved in the request flow.
User-added image

Timeout issues can also arise in JFrog Artifactory - Tomcat when the server lacks capacity. Ensure sufficient resources are available for Tomcat to handle the load and fine-tune the Artifactory server for high loads (Here is the link to the KB to tune Artifactory for heavy loads). The default timeout is 60 seconds but can be increased by modifying the server.xml file by adding the below parameter to the tomcat/conf/server.xml file(a restart is required to take the changes into effect).
shared:

 extraJavaOpts: “connectionTimeout=“60000””

Additionally, consider increasing the socket timeout in the remote repository advanced settings if upstream responses are slow. If the issue persists, it could be due to the network proxy terminating connections. Remove the proxy and collaborate with the appropriate teams to address the problem.

Usecase2: Timeout occurs while downloading a private package from the backend filestore like S3. The usual flow may look like the diagram below:-
User-added image


Check 1: Validate if there are issues with the S3 provider by downloading binaries directly from S3 using tools like s3cmd or AWS CLI on the local server of the JFrog Artifactory.

Check 2: If S3 performance is fine, bypass the network proxy and attempt to download the binary. To increase the timeout between JFrog Artifactory Server and backend S3, modify the Artifactory binarystoreconfig.xml file with the provided snippet, specifying the desired connection timeout.
<connectionTimeout>120000><connectionTimeout>

An example snippet of Artifactory Binary store config would look like this:
<config version=”2”>
   <chain template=”google-storage-v2″/>
   <provider id=”google-storage-v2″ type=”google-storage-v2″>
       <bucketName>my-bucket</bucketName>
       <path>myPath</path>
       <rootFoldersNameLength>3</rootFoldersNameLength>
       <useInstanceCredentials>false</useInstanceCredentials>
       <signatureExpirySeconds>10</signatureExpirySeconds>
       <proxyHost>127.0.0.1</proxyHost>
       <proxyPort>8888</proxyPort>
       <proxyIdentity>username</proxyIdentity>
       <proxyCredential>password</proxyCredential>
       <maxConnections>50</maxConnections>
       <connectionTimeout>120000</connectionTimeout>
   </provider>
</config>