Add results for docker repositories.
- Add results for Registry2. - Add results for Sonatype Nexus. - Add results for Artifactory. Change-Id: I57700e04bf3f417b5fd960113bab23deeadf56f1
@ -21,6 +21,7 @@ Contents
|
||||
introduction.rst
|
||||
methodologies/index.rst
|
||||
test_plans/index.rst
|
||||
test_results/index.rst
|
||||
labs/index.rst
|
||||
test_results/index
|
||||
|
||||
|
After Width: | Height: | Size: 23 KiB |
@ -0,0 +1,587 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<config xmlns="http://artifactory.jfrog.org/xsd/1.7.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.jfrog.org/xsd/artifactory-v1_7_0.xsd">
|
||||
<offlineMode>false</offlineMode>
|
||||
<helpLinksEnabled>true</helpLinksEnabled>
|
||||
<fileUploadMaxSizeMb>100</fileUploadMaxSizeMb>
|
||||
<dateFormat>dd-MM-yy HH:mm:ss z</dateFormat>
|
||||
<addons>
|
||||
<showAddonsInfo>true</showAddonsInfo>
|
||||
<showAddonsInfoCookie>1457516661046</showAddonsInfoCookie>
|
||||
</addons>
|
||||
<security>
|
||||
<anonAccessEnabled>true</anonAccessEnabled>
|
||||
<anonAccessToBuildInfosDisabled>false</anonAccessToBuildInfosDisabled>
|
||||
<hideUnauthorizedResources>false</hideUnauthorizedResources>
|
||||
<passwordSettings>
|
||||
<encryptionPolicy>supported</encryptionPolicy>
|
||||
<expirationPolicy>
|
||||
<enabled>false</enabled>
|
||||
<passwordMaxAge>60</passwordMaxAge>
|
||||
<notifyByEmail>true</notifyByEmail>
|
||||
</expirationPolicy>
|
||||
</passwordSettings>
|
||||
<ldapSettings/>
|
||||
<ldapGroupSettings/>
|
||||
<userLockPolicy>
|
||||
<enabled>false</enabled>
|
||||
<loginAttempts>5</loginAttempts>
|
||||
</userLockPolicy>
|
||||
</security>
|
||||
<backups>
|
||||
<backup>
|
||||
<key>backup-daily</key>
|
||||
<enabled>true</enabled>
|
||||
<cronExp>0 0 2 ? * MON-FRI</cronExp>
|
||||
<retentionPeriodHours>0</retentionPeriodHours>
|
||||
<createArchive>false</createArchive>
|
||||
<excludedRepositories/>
|
||||
<sendMailOnError>true</sendMailOnError>
|
||||
<excludeBuilds>false</excludeBuilds>
|
||||
<excludeNewRepositories>false</excludeNewRepositories>
|
||||
</backup>
|
||||
<backup>
|
||||
<key>backup-weekly</key>
|
||||
<enabled>false</enabled>
|
||||
<cronExp>0 0 2 ? * SAT</cronExp>
|
||||
<retentionPeriodHours>336</retentionPeriodHours>
|
||||
<createArchive>false</createArchive>
|
||||
<excludedRepositories/>
|
||||
<sendMailOnError>true</sendMailOnError>
|
||||
<excludeBuilds>false</excludeBuilds>
|
||||
<excludeNewRepositories>false</excludeNewRepositories>
|
||||
</backup>
|
||||
</backups>
|
||||
<indexer>
|
||||
<enabled>false</enabled>
|
||||
<cronExp>0 23 5 * * ?</cronExp>
|
||||
</indexer>
|
||||
<localRepositories>
|
||||
<localRepository>
|
||||
<key>docker-local</key>
|
||||
<type>docker</type>
|
||||
<includesPattern>**/*</includesPattern>
|
||||
<repoLayoutRef>simple-default</repoLayoutRef>
|
||||
<dockerApiVersion>V2</dockerApiVersion>
|
||||
<forceDockerAuthentication>false</forceDockerAuthentication>
|
||||
<forceNugetAuthentication>false</forceNugetAuthentication>
|
||||
<blackedOut>false</blackedOut>
|
||||
<handleReleases>true</handleReleases>
|
||||
<handleSnapshots>true</handleSnapshots>
|
||||
<maxUniqueSnapshots>0</maxUniqueSnapshots>
|
||||
<suppressPomConsistencyChecks>true</suppressPomConsistencyChecks>
|
||||
<propertySets>
|
||||
<propertySetRef>artifactory</propertySetRef>
|
||||
</propertySets>
|
||||
<archiveBrowsingEnabled>true</archiveBrowsingEnabled>
|
||||
<snapshotVersionBehavior>unique</snapshotVersionBehavior>
|
||||
<localRepoChecksumPolicyType>client-checksums</localRepoChecksumPolicyType>
|
||||
<calculateYumMetadata>false</calculateYumMetadata>
|
||||
<yumRootDepth>0</yumRootDepth>
|
||||
<debianTrivialLayout>false</debianTrivialLayout>
|
||||
</localRepository>
|
||||
</localRepositories>
|
||||
<remoteRepositories/>
|
||||
<virtualRepositories/>
|
||||
<proxies/>
|
||||
<reverseProxies>
|
||||
<reverseProxy>
|
||||
<key>nginx</key>
|
||||
<webServerType>nginx</webServerType>
|
||||
<artifactoryAppContext>artifactory</artifactoryAppContext>
|
||||
<publicAppContext>artifactory</publicAppContext>
|
||||
<serverName>172.20.9.16</serverName>
|
||||
<serverNameExpression xsi:nil="true"/>
|
||||
<sslCertificate xsi:nil="true"/>
|
||||
<sslKey xsi:nil="true"/>
|
||||
<dockerReverseProxyMethod>portPerRepo</dockerReverseProxyMethod>
|
||||
<useHttps>false</useHttps>
|
||||
<useHttp>true</useHttp>
|
||||
<sslPort>443</sslPort>
|
||||
<httpPort>80</httpPort>
|
||||
<reverseProxyRepositories>
|
||||
<reverseProxyRepoConfigs>
|
||||
<repoRef>docker-local</repoRef>
|
||||
<serverName>172.20.9.16</serverName>
|
||||
<port>5000</port>
|
||||
</reverseProxyRepoConfigs>
|
||||
</reverseProxyRepositories>
|
||||
<artifactoryServerName>172.20.9.16</artifactoryServerName>
|
||||
<upStreamName>artifactory</upStreamName>
|
||||
<artifactoryPort>8081</artifactoryPort>
|
||||
</reverseProxy>
|
||||
</reverseProxies>
|
||||
<propertySets>
|
||||
<propertySet>
|
||||
<name>artifactory</name>
|
||||
<visible>false</visible>
|
||||
<properties>
|
||||
<property>
|
||||
<name>licenses</name>
|
||||
<closedPredefinedValues>true</closedPredefinedValues>
|
||||
<multipleChoice>true</multipleChoice>
|
||||
<predefinedValues>
|
||||
<predefinedValue>
|
||||
<value>AFL-3.0</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>AGPL-V3</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>APL-1.0</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>Apache-2.0</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>Apache-1.0</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>Apache-1.1</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>APSL-2.0</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>Artistic-License-2.0</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>Attribution</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>BSL-1.0</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>CA-TOSL-1.1</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>CDDL-1.0</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>CDDL-1.0.1</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>CDDL-1.1</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>Codehaus</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>CCAG-2.5</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>CPAL-1.0</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>CUAOFFICE-1.0</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>Day</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>Day-Addendum</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>Bouncy-Castle</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>EUDATAGRID</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>Enovi</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>CPL-1.0</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>LGPL-2.1</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>LGPL-3.0</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>Historical</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>HSQLDB</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>IBMPL-1.0</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>IPAFont-1.0</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>ISC</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>Lucent-1.02</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>MirOS</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>MS-PL</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>MS-RL</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>JA-SIG</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>BSD</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>MIT</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>JSON</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>Motosoto-0.9.1</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>Eclipse-1.0</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>ECL2</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>Eiffel-2.0</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>JTidy</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>JTA-Specification-1.0.1B</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>Entessa-1.0</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>EUPL-1.1</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>Fair</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>Frameworx-1.0</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>GPL-2.0</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>GPL-2.0+CE</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>GPL-3.0</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>Mozilla-1.1</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>Multics</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>NASA-1.3</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>NTP</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>NAUMEN</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>Nethack</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>Nokia-1.0a</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>NOSL-3.0</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>OCLC-2.0</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>Openfont-1.1</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>Opengroup</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>OpenSymphony</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>OSL-3.0</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>PHP-3.0</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>PostgreSQL</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>Public Domain</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>Public Domain - SUN</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>PythonPL</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>PythonSoftFoundation</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>QTPL-1.0</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>Real-1.0</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>RPL-1.5</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>RicohPL</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>SimPL-2.0</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>Sleepycat</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>SUNPublic-1.0</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>Sybase-1.0</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>TMate</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>UoI-NCSA</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>IU-Extreme-1.1.1</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>VovidaPL-1.0</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>W3C</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>wxWindows</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>Xnet</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>ZPL-2.0</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>ZLIB</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>TPL</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
<predefinedValue>
|
||||
<value>Not Searched</value>
|
||||
<defaultValue>false</defaultValue>
|
||||
</predefinedValue>
|
||||
</predefinedValues>
|
||||
</property>
|
||||
</properties>
|
||||
</propertySet>
|
||||
</propertySets>
|
||||
<repoLayouts>
|
||||
<repoLayout>
|
||||
<name>maven-2-default</name>
|
||||
<artifactPathPattern>[orgPath]/[module]/[baseRev](-[folderItegRev])/[module]-[baseRev](-[fileItegRev])(-[classifier]).[ext]</artifactPathPattern>
|
||||
<distinctiveDescriptorPathPattern>true</distinctiveDescriptorPathPattern>
|
||||
<descriptorPathPattern>[orgPath]/[module]/[baseRev](-[folderItegRev])/[module]-[baseRev](-[fileItegRev])(-[classifier]).pom</descriptorPathPattern>
|
||||
<folderIntegrationRevisionRegExp>SNAPSHOT</folderIntegrationRevisionRegExp>
|
||||
<fileIntegrationRevisionRegExp>SNAPSHOT|(?:(?:[0-9]{8}.[0-9]{6})-(?:[0-9]+))</fileIntegrationRevisionRegExp>
|
||||
</repoLayout>
|
||||
<repoLayout>
|
||||
<name>ivy-default</name>
|
||||
<artifactPathPattern>[org]/[module]/[baseRev](-[folderItegRev])/[type]s/[module](-[classifier])-[baseRev](-[fileItegRev]).[ext]</artifactPathPattern>
|
||||
<distinctiveDescriptorPathPattern>true</distinctiveDescriptorPathPattern>
|
||||
<descriptorPathPattern>[org]/[module]/[baseRev](-[folderItegRev])/[type]s/ivy-[baseRev](-[fileItegRev]).xml</descriptorPathPattern>
|
||||
<folderIntegrationRevisionRegExp>\d{14}</folderIntegrationRevisionRegExp>
|
||||
<fileIntegrationRevisionRegExp>\d{14}</fileIntegrationRevisionRegExp>
|
||||
</repoLayout>
|
||||
<repoLayout>
|
||||
<name>gradle-default</name>
|
||||
<artifactPathPattern>[org]/[module]/[baseRev](-[folderItegRev])/[module]-[baseRev](-[fileItegRev])(-[classifier]).[ext]</artifactPathPattern>
|
||||
<distinctiveDescriptorPathPattern>true</distinctiveDescriptorPathPattern>
|
||||
<descriptorPathPattern>[org]/[module]/ivy-[baseRev](-[fileItegRev]).xml</descriptorPathPattern>
|
||||
<folderIntegrationRevisionRegExp>\d{14}</folderIntegrationRevisionRegExp>
|
||||
<fileIntegrationRevisionRegExp>\d{14}</fileIntegrationRevisionRegExp>
|
||||
</repoLayout>
|
||||
<repoLayout>
|
||||
<name>maven-1-default</name>
|
||||
<artifactPathPattern>[org]/[type]s/[module]-[baseRev](-[fileItegRev])(-[classifier]).[ext]</artifactPathPattern>
|
||||
<distinctiveDescriptorPathPattern>true</distinctiveDescriptorPathPattern>
|
||||
<descriptorPathPattern>[org]/[type]s/[module]-[baseRev](-[fileItegRev]).pom</descriptorPathPattern>
|
||||
<folderIntegrationRevisionRegExp>.+</folderIntegrationRevisionRegExp>
|
||||
<fileIntegrationRevisionRegExp>.+</fileIntegrationRevisionRegExp>
|
||||
</repoLayout>
|
||||
<repoLayout>
|
||||
<name>nuget-default</name>
|
||||
<artifactPathPattern>[orgPath]/[module]/[module].[baseRev](-[fileItegRev]).nupkg</artifactPathPattern>
|
||||
<distinctiveDescriptorPathPattern>false</distinctiveDescriptorPathPattern>
|
||||
<folderIntegrationRevisionRegExp>.*</folderIntegrationRevisionRegExp>
|
||||
<fileIntegrationRevisionRegExp>.*</fileIntegrationRevisionRegExp>
|
||||
</repoLayout>
|
||||
<repoLayout>
|
||||
<name>npm-default</name>
|
||||
<artifactPathPattern>[orgPath]/[module]/[module]-[baseRev](-[fileItegRev]).tgz</artifactPathPattern>
|
||||
<distinctiveDescriptorPathPattern>false</distinctiveDescriptorPathPattern>
|
||||
<folderIntegrationRevisionRegExp>.*</folderIntegrationRevisionRegExp>
|
||||
<fileIntegrationRevisionRegExp>.*</fileIntegrationRevisionRegExp>
|
||||
</repoLayout>
|
||||
<repoLayout>
|
||||
<name>bower-default</name>
|
||||
<artifactPathPattern>[orgPath]/[module]/[module]-[baseRev](-[fileItegRev]).[ext]</artifactPathPattern>
|
||||
<distinctiveDescriptorPathPattern>false</distinctiveDescriptorPathPattern>
|
||||
<folderIntegrationRevisionRegExp>.*</folderIntegrationRevisionRegExp>
|
||||
<fileIntegrationRevisionRegExp>.*</fileIntegrationRevisionRegExp>
|
||||
</repoLayout>
|
||||
<repoLayout>
|
||||
<name>vcs-default</name>
|
||||
<artifactPathPattern>[orgPath]/[module]/[refs<tags|branches>]/[baseRev]/[module]-[baseRev](-[fileItegRev])(-[classifier]).[ext]</artifactPathPattern>
|
||||
<distinctiveDescriptorPathPattern>false</distinctiveDescriptorPathPattern>
|
||||
<folderIntegrationRevisionRegExp>.*</folderIntegrationRevisionRegExp>
|
||||
<fileIntegrationRevisionRegExp>[a-zA-Z0-9]{40}</fileIntegrationRevisionRegExp>
|
||||
</repoLayout>
|
||||
<repoLayout>
|
||||
<name>sbt-default</name>
|
||||
<artifactPathPattern>[org]/[module]/(scala_[scalaVersion<.+>])/(sbt_[sbtVersion<.+>])/[baseRev]/[type]s/[module](-[classifier]).[ext]</artifactPathPattern>
|
||||
<distinctiveDescriptorPathPattern>true</distinctiveDescriptorPathPattern>
|
||||
<descriptorPathPattern>[org]/[module]/(scala_[scalaVersion<.+>])/(sbt_[sbtVersion<.+>])/[baseRev]/[type]s/ivy.xml</descriptorPathPattern>
|
||||
<folderIntegrationRevisionRegExp>\d{14}</folderIntegrationRevisionRegExp>
|
||||
<fileIntegrationRevisionRegExp>\d{14}</fileIntegrationRevisionRegExp>
|
||||
</repoLayout>
|
||||
<repoLayout>
|
||||
<name>simple-default</name>
|
||||
<artifactPathPattern>[orgPath]/[module]/[module]-[baseRev](-[fileItegRev]).[ext]</artifactPathPattern>
|
||||
<distinctiveDescriptorPathPattern>false</distinctiveDescriptorPathPattern>
|
||||
<folderIntegrationRevisionRegExp>.*</folderIntegrationRevisionRegExp>
|
||||
<fileIntegrationRevisionRegExp>.*</fileIntegrationRevisionRegExp>
|
||||
</repoLayout>
|
||||
</repoLayouts>
|
||||
<remoteReplications/>
|
||||
<localReplications/>
|
||||
<gcConfig>
|
||||
<cronExp>0 0 /4 * * ?</cronExp>
|
||||
</gcConfig>
|
||||
<cleanupConfig>
|
||||
<cronExp>0 12 5 * * ?</cronExp>
|
||||
</cleanupConfig>
|
||||
<virtualCacheCleanupConfig>
|
||||
<cronExp>0 12 0 * * ?</cronExp>
|
||||
</virtualCacheCleanupConfig>
|
||||
<folderDownloadConfig>
|
||||
<enabled>false</enabled>
|
||||
<maxDownloadSizeMb>1024</maxDownloadSizeMb>
|
||||
<maxFiles>5000</maxFiles>
|
||||
<maxConcurrentRequests>10</maxConcurrentRequests>
|
||||
</folderDownloadConfig>
|
||||
<trashcanConfig>
|
||||
<enabled>true</enabled>
|
||||
<allowPermDeletes>false</allowPermDeletes>
|
||||
<retentionPeriodDays>14</retentionPeriodDays>
|
||||
</trashcanConfig>
|
||||
</config>
|
@ -0,0 +1,85 @@
|
||||
user www-data;
|
||||
worker_processes 30;
|
||||
pid /run/nginx.pid;
|
||||
|
||||
events {
|
||||
worker_connections 768;
|
||||
# multi_accept on;
|
||||
}
|
||||
|
||||
http {
|
||||
|
||||
sendfile on;
|
||||
tcp_nopush on;
|
||||
tcp_nodelay on;
|
||||
keepalive_timeout 65;
|
||||
types_hash_max_size 2048;
|
||||
include /etc/nginx/mime.types;
|
||||
default_type application/octet-stream;
|
||||
|
||||
access_log /var/log/nginx/access.log;
|
||||
error_log /var/log/nginx/error.log;
|
||||
|
||||
gzip on;
|
||||
gzip_disable "msie6";
|
||||
|
||||
include /etc/nginx/conf.d/*.conf;
|
||||
include /etc/nginx/sites-enabled/*;
|
||||
|
||||
## server configuration
|
||||
server {
|
||||
|
||||
listen 80 ;
|
||||
|
||||
server_name 172.20.9.16;
|
||||
if ($http_x_forwarded_proto = '') {
|
||||
set $http_x_forwarded_proto $scheme;
|
||||
}
|
||||
## Application specific logs
|
||||
## access_log /var/log/nginx/172.20.9.16-access.log timing;
|
||||
## error_log /var/log/nginx/172.20.9.16-error.log;
|
||||
rewrite ^/$ /artifactory/webapp/ redirect;
|
||||
rewrite ^/artifactory/?(/webapp)?$ /artifactory/webapp/ redirect;
|
||||
location /artifactory/ {
|
||||
proxy_read_timeout 900;
|
||||
proxy_pass_header Server;
|
||||
proxy_cookie_path ~*^/.* /;
|
||||
proxy_pass http://172.20.9.16:8081/artifactory/;
|
||||
proxy_set_header X-Artifactory-Override-Base-Url $http_x_forwarded_proto://$host:$server_port/artifactory;
|
||||
proxy_set_header X-Forwarded-Port $server_port;
|
||||
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
}
|
||||
}
|
||||
|
||||
## server configuration
|
||||
server {
|
||||
listen 5000;
|
||||
|
||||
|
||||
server_name 172.20.9.16;
|
||||
if ($http_x_forwarded_proto = '') {
|
||||
set $http_x_forwarded_proto $scheme;
|
||||
}
|
||||
## Application specific logs
|
||||
## access_log /var/log/nginx/172.20.9.16-access.log timing;
|
||||
## error_log /var/log/nginx/172.20.9.16-error.log;
|
||||
rewrite ^/(v1|v2)/(.*) /artifactory/api/docker/docker-local/$1/$2;
|
||||
client_max_body_size 0;
|
||||
chunked_transfer_encoding on;
|
||||
location /artifactory/ {
|
||||
proxy_read_timeout 900;
|
||||
proxy_pass_header Server;
|
||||
proxy_cookie_path ~*^/.* /;
|
||||
proxy_pass http://172.20.9.16:8081/artifactory/;
|
||||
proxy_set_header X-Artifactory-Override-Base-Url $http_x_forwarded_proto://$host:$server_port/artifactory;
|
||||
proxy_set_header X-Forwarded-Port $server_port;
|
||||
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,107 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<security version="v8">
|
||||
<users>
|
||||
<user>
|
||||
<username>anonymous</username>
|
||||
<password>d41d8cd98f00b204e9800998ecf8427e</password>
|
||||
<admin>false</admin>
|
||||
<enabled>true</enabled>
|
||||
<updatableProfile>false</updatableProfile>
|
||||
<accountNonExpired>true</accountNonExpired>
|
||||
<credentialsExpired>false</credentialsExpired>
|
||||
<credentialsNonExpired>true</credentialsNonExpired>
|
||||
<accountNonLocked>true</accountNonLocked>
|
||||
<transientUser>false</transientUser>
|
||||
<groups/>
|
||||
<userPropertyInfos>
|
||||
<userProperty>
|
||||
<propKey>passwordCreated</propKey>
|
||||
<propValue>1457516661467</propValue>
|
||||
</userProperty>
|
||||
</userPropertyInfos>
|
||||
<lastLoginTimeMillis>0</lastLoginTimeMillis>
|
||||
<lastAccessTimeMillis>0</lastAccessTimeMillis>
|
||||
<locked>false</locked>
|
||||
</user>
|
||||
<user>
|
||||
<username>admin</username>
|
||||
<password>1f70548d73baca61aab8660733c7de81</password>
|
||||
<salt>CAFEBABEEBABEFAC</salt>
|
||||
<admin>true</admin>
|
||||
<enabled>true</enabled>
|
||||
<updatableProfile>true</updatableProfile>
|
||||
<accountNonExpired>true</accountNonExpired>
|
||||
<credentialsExpired>false</credentialsExpired>
|
||||
<credentialsNonExpired>true</credentialsNonExpired>
|
||||
<accountNonLocked>true</accountNonLocked>
|
||||
<realm>internal</realm>
|
||||
<transientUser>false</transientUser>
|
||||
<groups/>
|
||||
<userPropertyInfos>
|
||||
<userProperty>
|
||||
<propKey>passwordCreated</propKey>
|
||||
<propValue>1457516661448</propValue>
|
||||
</userProperty>
|
||||
</userPropertyInfos>
|
||||
<lastLoginTimeMillis>1458541070096</lastLoginTimeMillis>
|
||||
<lastLoginClientIp>172.20.8.3</lastLoginClientIp>
|
||||
<lastAccessTimeMillis>0</lastAccessTimeMillis>
|
||||
<locked>false</locked>
|
||||
</user>
|
||||
</users>
|
||||
<groups>
|
||||
<group>
|
||||
<groupName>readers</groupName>
|
||||
<description>A group for read-only users</description>
|
||||
<newUserDefault>true</newUserDefault>
|
||||
<realm>artifactory</realm>
|
||||
</group>
|
||||
</groups>
|
||||
<acls>
|
||||
<acl>
|
||||
<permissionTarget>
|
||||
<name>Any Remote</name>
|
||||
<repoKeys>
|
||||
<string>ANY REMOTE</string>
|
||||
</repoKeys>
|
||||
<includes>
|
||||
<string>**</string>
|
||||
</includes>
|
||||
<excludes/>
|
||||
</permissionTarget>
|
||||
<aces>
|
||||
<ace>
|
||||
<principal>anonymous</principal>
|
||||
<group>false</group>
|
||||
<mask>3</mask>
|
||||
</ace>
|
||||
</aces>
|
||||
<updatedBy>_system_</updatedBy>
|
||||
</acl>
|
||||
<acl>
|
||||
<permissionTarget>
|
||||
<name>Anything</name>
|
||||
<repoKeys>
|
||||
<string>ANY</string>
|
||||
</repoKeys>
|
||||
<includes>
|
||||
<string>**</string>
|
||||
</includes>
|
||||
<excludes/>
|
||||
</permissionTarget>
|
||||
<aces>
|
||||
<ace>
|
||||
<principal>readers</principal>
|
||||
<group>true</group>
|
||||
<mask>1</mask>
|
||||
</ace>
|
||||
<ace>
|
||||
<principal>anonymous</principal>
|
||||
<group>false</group>
|
||||
<mask>31</mask>
|
||||
</ace>
|
||||
</aces>
|
||||
<updatedBy>_system_</updatedBy>
|
||||
</acl>
|
||||
</acls>
|
||||
</security>
|
@ -0,0 +1,347 @@
|
||||
|
||||
.. _Measuring_performance_of_JFrog_Artifactory_Pro:
|
||||
|
||||
*********************************************************
|
||||
Results of measuring performance of JFrog Artifactory Pro
|
||||
*********************************************************
|
||||
|
||||
:Abstract:
|
||||
|
||||
This document includes performance test results of `JFrog Artifactory Pro`_
|
||||
service as a repository of docker images. All test have been performed
|
||||
regarding :ref:`Measuring_performance_of_container_repositories`
|
||||
|
||||
|
||||
Environment description
|
||||
=======================
|
||||
Hardware configuration of each server
|
||||
-------------------------------------
|
||||
|
||||
.. table:: Description of servers hardware
|
||||
|
||||
+-------+----------------+------------------------+------------------------+
|
||||
|server |name |728998-comp-disk-228 |728998-comp-disk-227 |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |role |test_tool |artifactory |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |vendor,model |HP,DL380 Gen9 |HP,DL380 Gen9 |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |operating_system| | 3.13.0-76-generic | | 3.13.0-76-generic |
|
||||
| | | | Ubuntu-trusty | | Ubuntu-trusty |
|
||||
| | | | x86_64 | | x86_64 |
|
||||
+-------+----------------+------------------------+------------------------+
|
||||
|CPU |vendor,model |Intel,E5-2680 v3 |Intel,E5-2680 v3 |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |processor_count |2 |2 |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |core_count |12 |12 |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |frequency_MHz |2500 |2500 |
|
||||
+-------+----------------+------------------------+------------------------+
|
||||
|RAM |vendor,model |HP,752369-081 |HP,752369-081 |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |amount_MB |262144 |262144 |
|
||||
+-------+----------------+------------------------+------------------------+
|
||||
|NETWORK|interface_name |p1p1 |p1p1 |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |vendor,model |Intel,X710 Dual Port |Intel,X710 Dual Port |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |bandwidth |10G |10G |
|
||||
+-------+----------------+------------------------+------------------------+
|
||||
|STORAGE|dev_name |/dev/sda |/dev/sda |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |vendor,model | | raid10 - HP P840 | | raid10 - HP P840 |
|
||||
| | | | 12 disks EH0600JEDHE | | 12 disks EH0600JEDHE |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |SSD/HDD |HDD |HDD |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |size | 3,6TB | 3,6TB |
|
||||
+-------+----------------+------------------------+------------------------+
|
||||
|
||||
Network scheme and part of configuration of hardware network switches
|
||||
---------------------------------------------------------------------
|
||||
Network scheme of the environment:
|
||||
|
||||
.. image:: Network_Scheme.png
|
||||
:alt: Network Scheme of the environment
|
||||
|
||||
Here is the part of switch configuration for each switch port which connected to
|
||||
p1p1 interface of a server:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
switchport mode trunk
|
||||
switchport trunk native vlan 600
|
||||
switchport trunk allowed vlan 600-602,630-649
|
||||
spanning-tree port type edge trunk
|
||||
spanning-tree bpduguard enable
|
||||
no snmp trap link-status
|
||||
|
||||
Software configuration of the Artifactory service
|
||||
-------------------------------------------------
|
||||
Installation of Artifactory:
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
.. code:: bash
|
||||
|
||||
# Install Java
|
||||
apt-get install software-properties-common
|
||||
sudo add-apt-repository ppa:webupd8team/java
|
||||
apt-get update
|
||||
sudo apt-get install oracle-java8-installer # Interactive java installer
|
||||
# Install ArtifactoryPro
|
||||
echo "deb https://jfrog.bintray.com/artifactory-pro-debs trusty main" > /etc/apt/sources.list.d/artifactory.list
|
||||
apt-get update
|
||||
apt-get install jfrog-artifactory-pro
|
||||
# Install Nginx as a reverse proxy
|
||||
# https://www.jfrog.com/confluence/display/RTF/Configuring+NGINX
|
||||
apt-get install nginx
|
||||
|
||||
You can find nginx configuration file here
|
||||
:download:`nginx.conf <configs/nginx.conf>`
|
||||
|
||||
Here is the all config files of Artifactory
|
||||
:download:`artifactory_etc.tar.gz <configs/artifactory_etc.tar.gz>`
|
||||
|
||||
After installation all default repositories was removed from Artifactory and
|
||||
"docker-local" hosted repository was created. You can find full configuration of
|
||||
the Artifactory installation here:
|
||||
:download:`config_descriptor.xml <configs/config_descriptor.xml>`
|
||||
:download:`security_descriptor.xml <configs/security_descriptor.xml>`
|
||||
|
||||
.. table:: Versions of some software
|
||||
|
||||
+-----------+------------------+
|
||||
|Software |Version |
|
||||
+===========+==================+
|
||||
|Ubuntu |Ubuntu 14.04.3 LTS|
|
||||
+-----------+------------------+
|
||||
|Artifactory|4.5.2 rev 40121 |
|
||||
+-----------+------------------+
|
||||
|
||||
Operating system configuration:
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
You can find outputs of some commands and /etc folder in the following archive:
|
||||
:download:`server_description_of_728998-comp-disk-227.tar.gz <configs/server_description_of_728998-comp-disk-227.tar.gz>`
|
||||
|
||||
Software configuration of the node with test tool
|
||||
-------------------------------------------------
|
||||
Test tool:
|
||||
^^^^^^^^^^
|
||||
Firstly we need to install docker-engine:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" > /etc/apt/sources.list.d/docker.list
|
||||
apt-get update && apt-get -y install docker-engine
|
||||
echo DOCKER_OPTS=\"--insecure-registry 172.20.9.16:5000\" >> /etc/default/docker
|
||||
service docker restart
|
||||
|
||||
We use Python2.7 and
|
||||
:ref:`Script for collecting performance metrics of docker repository` with
|
||||
:ref:`Proposed docker file` to perform the tests. The image size is a sum of
|
||||
layers:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
IMAGE CREATED CREATED BY SIZE COMMENT
|
||||
93333b8ed564 About a minute ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "/usr/s 0 B
|
||||
35d8142196c0 About a minute ago /bin/sh -c #(nop) EXPOSE 80/tcp 0 B
|
||||
3a63f30ab247 About a minute ago /bin/sh -c apt-get install -y nginx 18.14 MB
|
||||
97434d46f197 2 days ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B
|
||||
<missing> 2 days ago /bin/sh -c sed -i 's/^#\s*\(deb.*universe\)$/ 1.895 kB
|
||||
<missing> 2 days ago /bin/sh -c set -xe && echo '#!/bin/sh' > /u 194.5 kB
|
||||
<missing> 2 days ago /bin/sh -c #(nop) ADD file:e01d51d39ea04c8efb 187.8 MB
|
||||
|
||||
It means that DATA_SIZE=206.13 MB
|
||||
|
||||
.. table:: Versions of some software
|
||||
|
||||
+-----------+------------------+
|
||||
|Software |Version |
|
||||
+===========+==================+
|
||||
|Ubuntu |Ubuntu 14.04.3 LTS|
|
||||
+-----------+------------------+
|
||||
|Docker |1.10 |
|
||||
+-----------+------------------+
|
||||
|
||||
Operating system:
|
||||
^^^^^^^^^^^^^^^^^
|
||||
You can find outputs of some commands and /etc folder in the following archive:
|
||||
:download:`server_description_of_728997-comp-disk-228.tar.gz <configs/server_description_of_728997-comp-disk-228.tar.gz>`
|
||||
|
||||
Testing process
|
||||
===============
|
||||
1.
|
||||
Artifactory was installed on top of 728998-comp-disk-227 server as described in
|
||||
`Installation of Artifactory:`_ section.
|
||||
|
||||
2.
|
||||
The values of the variables in test-repo.py script was changed:
|
||||
iterations = 1000
|
||||
concurrency = 1
|
||||
repo_address = "172.20.9.16:5000"
|
||||
|
||||
3.
|
||||
The following command was executed to perform the tests:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
sudo python test-repo.py
|
||||
|
||||
4.
|
||||
push_results.csv and pull_results.csv was saved in persistent folder.
|
||||
|
||||
5. Clean up docker repository in Artifactory via Web UI
|
||||
|
||||
6.
|
||||
The steps from 2 to 5 was repeated with the following values of the
|
||||
concurrency parameters: 1,10,30,50,100
|
||||
|
||||
Results
|
||||
=======
|
||||
Push action results
|
||||
-------------------
|
||||
PUSH_TIME(ITERATION)
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
After simple processing results the following plots for push action in depend on
|
||||
iteration number created (click to expand an image):
|
||||
|
||||
+----------------+-------------------------------------------------------------+
|
||||
|Function |Plot |
|
||||
+================+=============================================================+
|
||||
|PUSH_TIME |.. image:: results/artifactory-1000-1/push-1000-1.png |
|
||||
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=1) |
|
||||
|CONCURRENCY=1) | :scale: 20 |
|
||||
+----------------+-------------------------------------------------------------+
|
||||
|PUSH_TIME |.. image:: results/artifactory-1000-10/push-1000-10.png |
|
||||
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=10) |
|
||||
|CONCURRENCY=10) | :scale: 20 |
|
||||
+----------------+-------------------------------------------------------------+
|
||||
|PUSH_TIME |.. image:: results/artifactory-1000-30/push-1000-30.png |
|
||||
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=30) |
|
||||
|CONCURRENCY=30) | :scale: 20 |
|
||||
+----------------+-------------------------------------------------------------+
|
||||
|PUSH_TIME |.. image:: results/artifactory-1000-50/push-1000-50.png |
|
||||
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=50) |
|
||||
|CONCURRENCY=50) | :scale: 20 |
|
||||
+----------------+-------------------------------------------------------------+
|
||||
|PUSH_TIME |.. image:: results/artifactory-1000-100/push-1000-100.png |
|
||||
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=100) |
|
||||
|CONCURRENCY=100)| :scale: 20 |
|
||||
+----------------+-------------------------------------------------------------+
|
||||
|PUSH_TIME |.. image:: results/artifactory-push-1000-1_10_30_50_100.png |
|
||||
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY={1,10,30,50,100} |
|
||||
|CONCURRENCY={1, | :scale: 20 |
|
||||
|10,30,50,100} | |
|
||||
+----------------+-------------------------------------------------------------+
|
||||
|
||||
PUSH_TIME(CONCURRENCY)
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
The following table and graph show how PUSH_TIME parameter depend on CONCURRENCY
|
||||
parameter.
|
||||
|
||||
.. table:: Maximum, Minimum, Average and Percentile 90% of PUSH_TIME values in
|
||||
depend on CONCURRENCY parameter.
|
||||
|
||||
+-----------+-----------+-----------+-----------+--------------+
|
||||
|Concurrency|Maximum |Minimum |Average |Percentile 90%|
|
||||
+===========+===========+===========+===========+==============+
|
||||
+-----------+-----------+-----------+-----------+--------------+
|
||||
|1 |20.45173717|18.13562512|18.45595757|18.70360937 |
|
||||
+-----------+-----------+-----------+-----------+--------------+
|
||||
|10 |52.81749606|21.4737699 |47.39192888|47.92230422 |
|
||||
+-----------+-----------+-----------+-----------+--------------+
|
||||
|30 |147.2520959|21.35128784|140.8133277|143.3592351 |
|
||||
+-----------+-----------+-----------+-----------+--------------+
|
||||
|50 |242.0436599|21.53936005|232.1077632|238.6817375 |
|
||||
+-----------+-----------+-----------+-----------+--------------+
|
||||
|100 |474.1983588|21.41779709|447.7350837|471.5060248 |
|
||||
+-----------+-----------+-----------+-----------+--------------+
|
||||
|
||||
.. image:: results/artifactory-push.png
|
||||
:alt: PUSH_TIME
|
||||
:scale: 100
|
||||
|
||||
Pull action results
|
||||
-------------------
|
||||
PULL_TIME(ITERATION)
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
After simple processing results the following plots for pull action in depend on
|
||||
iteration number created (click to expand an image):
|
||||
|
||||
+----------------+-------------------------------------------------------------+
|
||||
|Function |Plot |
|
||||
+================+=============================================================+
|
||||
|PULL_TIME |.. image:: results/artifactory-1000-1/pull-1000-1.png |
|
||||
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=1) |
|
||||
|CONCURRENCY=1) | :scale: 20 |
|
||||
+----------------+-------------------------------------------------------------+
|
||||
|PULL_TIME |.. image:: results/artifactory-1000-10/pull-1000-10.png |
|
||||
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=10) |
|
||||
|CONCURRENCY=10) | :scale: 20 |
|
||||
+----------------+-------------------------------------------------------------+
|
||||
|PULL_TIME |.. image:: results/artifactory-1000-30/pull-1000-30.png |
|
||||
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=30) |
|
||||
|CONCURRENCY=30) | :scale: 20 |
|
||||
+----------------+-------------------------------------------------------------+
|
||||
|PULL_TIME |.. image:: results/artifactory-1000-50/pull-1000-50.png |
|
||||
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=50) |
|
||||
|CONCURRENCY=50) | :scale: 20 |
|
||||
+----------------+-------------------------------------------------------------+
|
||||
|PULL_TIME |.. image:: results/artifactory-1000-100/pull-1000-100.png |
|
||||
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=100) |
|
||||
|CONCURRENCY=100)| :scale: 20 |
|
||||
+----------------+-------------------------------------------------------------+
|
||||
|PULL_TIME |.. image:: results/artifactory-pull-1000-1_10_30_50_100.png |
|
||||
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY={1,10,30,50,100} |
|
||||
|CONCURRENCY={1, | :scale: 20 |
|
||||
|10,30,50,100} | |
|
||||
+----------------+-------------------------------------------------------------+
|
||||
|
||||
PULL_TIME(CONCURRENCY)
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
The following table and graph show how PUSH_TIME parameter depend on CONCURRENCY
|
||||
parameter.
|
||||
|
||||
.. table:: Maximum, Minimum, Average and Percentile 90% of PULL_TIME values in
|
||||
depend on CONCURRENCY parameter.
|
||||
|
||||
+-----------+------------+-------------+------------+--------------+
|
||||
|Concurrency|Maximum |Minimum |Average |Percentile 90%|
|
||||
+===========+============+=============+============+==============+
|
||||
|1 |1.023168087 |0.09103393555|0.7067174957|0.7760614157 |
|
||||
+-----------+------------+-------------+------------+--------------+
|
||||
|10 |1.87360692 |0.08845591545|1.127708118 |1.361271906 |
|
||||
+-----------+------------+-------------+------------+--------------+
|
||||
|30 |4.27976203 |0.1920921803 |2.644113734 |2.870757174 |
|
||||
+-----------+------------+-------------+------------+--------------+
|
||||
|50 |6.287320852 |0.2292528152 |4.416184656 |4.711911416 |
|
||||
+-----------+------------+-------------+------------+--------------+
|
||||
|100 |10.30138803 |0.167137146 |8.50843117 |9.09850688 |
|
||||
+-----------+------------+-------------+------------+--------------+
|
||||
|
||||
.. image:: results/artifactory-pull.png
|
||||
:alt: PULL_TIME
|
||||
:scale: 100
|
||||
|
||||
Issues which have been found during the tests
|
||||
=============================================
|
||||
|
||||
.. table:: Issues which have been found during the tests
|
||||
|
||||
+-------------------------------+---------------------------------------------+
|
||||
|Issue description |Root cause, Link |
|
||||
+===============================+=============================================+
|
||||
|| Artifactory allows re-pushing|https://www.jfrog.com/jira/browse/RTFACT-9591|
|
||||
|| existed docker layers instead| |
|
||||
|| of answer with | |
|
||||
|| "already exists" message | |
|
||||
+-------------------------------+---------------------------------------------+
|
||||
|| only 5 images can be uploaded|| Root cause of the issue haven't found yet |
|
||||
|| to Artifactory at the || |
|
||||
|| same time || |
|
||||
+-------------------------------+---------------------------------------------+
|
||||
|
||||
.. references:
|
||||
|
||||
.. _JFrog Artifactory Pro: https://www.jfrog.com/artifactory
|
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 39 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 37 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 73 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 52 KiB |
After Width: | Height: | Size: 14 KiB |
10
doc/source/test_results/container_repositories/index.rst
Normal file
@ -0,0 +1,10 @@
|
||||
Container repositories test results
|
||||
***********************************
|
||||
|
||||
.. toctree::
|
||||
:numbered:
|
||||
:maxdepth: 3
|
||||
|
||||
registry2/index
|
||||
artifactory/index
|
||||
nexus/index
|
After Width: | Height: | Size: 24 KiB |
356
doc/source/test_results/container_repositories/nexus/index.rst
Normal file
@ -0,0 +1,356 @@
|
||||
|
||||
.. _Measuring_performance_of_Sonatype_Nexus:
|
||||
|
||||
**************************************************
|
||||
Results of measuring performance of Sonatype Nexus
|
||||
**************************************************
|
||||
|
||||
:Abstract:
|
||||
|
||||
This document includes performance test results of `Sonatype Nexus`_ service
|
||||
as a repository of docker images. All test have been performed regarding
|
||||
:ref:`Measuring_performance_of_container_repositories`
|
||||
|
||||
|
||||
Environment description
|
||||
=======================
|
||||
Hardware configuration of each server
|
||||
-------------------------------------
|
||||
|
||||
.. table:: Description of servers hardware
|
||||
|
||||
+-------+----------------+------------------------+------------------------+
|
||||
|server |name |728998-comp-disk-228 |728998-comp-disk-227 |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |role |test_tool |Nexus |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |vendor,model |HP,DL380 Gen9 |HP,DL380 Gen9 |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |operating_system| | 3.13.0-76-generic | | 3.13.0-76-generic |
|
||||
| | | | Ubuntu-trusty | | Ubuntu-trusty |
|
||||
| | | | x86_64 | | x86_64 |
|
||||
+-------+----------------+------------------------+------------------------+
|
||||
|CPU |vendor,model |Intel,E5-2680 v3 |Intel,E5-2680 v3 |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |processor_count |2 |2 |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |core_count |12 |12 |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |frequency_MHz |2500 |2500 |
|
||||
+-------+----------------+------------------------+------------------------+
|
||||
|RAM |vendor,model |HP,752369-081 |HP,752369-081 |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |amount_MB |262144 |262144 |
|
||||
+-------+----------------+------------------------+------------------------+
|
||||
|NETWORK|interface_name |p1p1 |p1p1 |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |vendor,model |Intel,X710 Dual Port |Intel,X710 Dual Port |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |bandwidth |10G |10G |
|
||||
+-------+----------------+------------------------+------------------------+
|
||||
|STORAGE|dev_name |/dev/sda |/dev/sda |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |vendor,model | | raid10 - HP P840 | | raid10 - HP P840 |
|
||||
| | | | 12 disks EH0600JEDHE | | 12 disks EH0600JEDHE |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |SSD/HDD |HDD |HDD |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |size | 3,6TB | 3,6TB |
|
||||
+-------+----------------+------------------------+------------------------+
|
||||
|
||||
Network scheme and part of configuration of hardware network switches
|
||||
---------------------------------------------------------------------
|
||||
Network scheme of the environment:
|
||||
|
||||
.. image:: Network_Scheme.png
|
||||
:alt: Network Scheme of the environment
|
||||
|
||||
Here is the part of switch configuration for each switch port which connected to
|
||||
p1p1 interface of a server:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
switchport mode trunk
|
||||
switchport trunk native vlan 600
|
||||
switchport trunk allowed vlan 600-602,630-649
|
||||
spanning-tree port type edge trunk
|
||||
spanning-tree bpduguard enable
|
||||
no snmp trap link-status
|
||||
|
||||
Software configuration of the Nexus service
|
||||
----------------------------------------------------
|
||||
Installation of Nexus:
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
.. code:: bash
|
||||
|
||||
# Install Java
|
||||
apt-get install software-properties-common
|
||||
sudo add-apt-repository ppa:webupd8team/java
|
||||
apt-get update
|
||||
sudo apt-get install oracle-java8-installer # Interactive java installer
|
||||
# Install Nexus
|
||||
wget http://download.sonatype.com/nexus/3/nexus-3.0.0-m7-unix.sh
|
||||
chmod +x nexus-3.0.0-m7-unix.sh
|
||||
echo "o
|
||||
1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
n
|
||||
y
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
1
|
||||
1
|
||||
" | ./nexus-3.0.0-m7-unix.sh -c
|
||||
service nexus restart
|
||||
update-rc.d nexus defaults
|
||||
|
||||
After installation all default repositories was removed from Nexus and
|
||||
"docker-local" hosted repository was created. You can find full configuration of
|
||||
the Nexus installation in the support file created after configuration:
|
||||
:download:`support.zip <configs/support.zip>`
|
||||
|
||||
.. table:: Versions of some software
|
||||
|
||||
+-----------+------------------+
|
||||
|Software |Version |
|
||||
+===========+==================+
|
||||
|Ubuntu |Ubuntu 14.04.3 LTS|
|
||||
+-----------+------------------+
|
||||
|NexusOSS |3m7 |
|
||||
+-----------+------------------+
|
||||
|
||||
Operating system configuration:
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
You can find outputs of some commands and /etc folder in the following archive:
|
||||
:download:`server_description_of_728998-comp-disk-227.tar.gz <configs/server_description_of_728998-comp-disk-227.tar.gz>`
|
||||
|
||||
Software configuration of the node with test tool
|
||||
-------------------------------------------------
|
||||
Test tool:
|
||||
^^^^^^^^^^
|
||||
Firstly we need to install docker-engine:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" > /etc/apt/sources.list.d/docker.list
|
||||
apt-get update && apt-get -y install docker-engine
|
||||
echo DOCKER_OPTS=\"--insecure-registry 172.20.9.16:5000\" >> /etc/default/docker
|
||||
service docker restart
|
||||
|
||||
We use Python2.7 and
|
||||
:ref:`Script for collecting performance metrics of docker repository` with
|
||||
:ref:`Proposed docker file` to perform the tests. The image size is a sum of
|
||||
layers:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
IMAGE CREATED CREATED BY SIZE COMMENT
|
||||
93333b8ed564 About a minute ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "/usr/s 0 B
|
||||
35d8142196c0 About a minute ago /bin/sh -c #(nop) EXPOSE 80/tcp 0 B
|
||||
3a63f30ab247 About a minute ago /bin/sh -c apt-get install -y nginx 18.14 MB
|
||||
97434d46f197 2 days ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B
|
||||
<missing> 2 days ago /bin/sh -c sed -i 's/^#\s*\(deb.*universe\)$/ 1.895 kB
|
||||
<missing> 2 days ago /bin/sh -c set -xe && echo '#!/bin/sh' > /u 194.5 kB
|
||||
<missing> 2 days ago /bin/sh -c #(nop) ADD file:e01d51d39ea04c8efb 187.8 MB
|
||||
|
||||
It means that DATA_SIZE=206.13 MB
|
||||
|
||||
.. table:: Versions of some software
|
||||
|
||||
+-----------+------------------+
|
||||
|Software |Version |
|
||||
+===========+==================+
|
||||
|Ubuntu |Ubuntu 14.04.3 LTS|
|
||||
+-----------+------------------+
|
||||
|Docker |1.10 |
|
||||
+-----------+------------------+
|
||||
|
||||
Operating system:
|
||||
^^^^^^^^^^^^^^^^^
|
||||
You can find outputs of some commands and /etc folder in the following archive:
|
||||
:download:`server_description_of_728997-comp-disk-228.tar.gz <configs/server_description_of_728997-comp-disk-228.tar.gz>`
|
||||
|
||||
Testing process
|
||||
===============
|
||||
1.
|
||||
Nexus was installed on top of 728998-comp-disk-227 server as described in
|
||||
`Installation of Nexus:`_ section.
|
||||
|
||||
2.
|
||||
The values of the variables in test-repo.py script was changed:
|
||||
iterations = 1000
|
||||
concurrency = 1
|
||||
repo_address = "172.20.9.16:5000"
|
||||
|
||||
3.
|
||||
The following command was executed to perform the tests:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
sudo docker login -u jenkins -p jenkins -e jenkins@example.com
|
||||
sudo python test-repo.py
|
||||
|
||||
4.
|
||||
push_results.csv and pull_results.csv was saved in persistent folder.
|
||||
|
||||
5.
|
||||
The steps from 1 to 4 was repeated with the following values of the
|
||||
concurrency parameters: 1,10,30,50,100
|
||||
|
||||
Results
|
||||
=======
|
||||
Push action results
|
||||
-------------------
|
||||
PUSH_TIME(ITERATION)
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
After simple processing results the following plots for push action in depend on
|
||||
iteration number created (click to expand an image):
|
||||
|
||||
+----------------+----------------------------------------------------------+
|
||||
|Function |Plot |
|
||||
+================+==========================================================+
|
||||
|PUSH_TIME |.. image:: results/nexus-1000-1/push-1000-1.png |
|
||||
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=1) |
|
||||
|CONCURRENCY=1) | :scale: 20 |
|
||||
+----------------+----------------------------------------------------------+
|
||||
|PUSH_TIME |.. image:: results/nexus-1000-10/push-1000-10.png |
|
||||
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=10) |
|
||||
|CONCURRENCY=10) | :scale: 20 |
|
||||
+----------------+----------------------------------------------------------+
|
||||
|PUSH_TIME |.. image:: results/nexus-1000-30/push-1000-30.png |
|
||||
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=30) |
|
||||
|CONCURRENCY=30) | :scale: 20 |
|
||||
+----------------+----------------------------------------------------------+
|
||||
|PUSH_TIME |.. image:: results/nexus-1000-50/push-1000-50.png |
|
||||
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=50) |
|
||||
|CONCURRENCY=50) | :scale: 20 |
|
||||
+----------------+----------------------------------------------------------+
|
||||
|PUSH_TIME |.. image:: results/nexus-1000-100/push-1000-100.png |
|
||||
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=100) |
|
||||
|CONCURRENCY=100)| :scale: 20 |
|
||||
+----------------+----------------------------------------------------------+
|
||||
|PUSH_TIME |.. image:: results/nexus-push-1000-1_10_30_50_100.png |
|
||||
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY={1,10,30,50,100}|
|
||||
|CONCURRENCY={1, | :scale: 20 |
|
||||
|10,30,50,100} | |
|
||||
+----------------+----------------------------------------------------------+
|
||||
|
||||
PUSH_TIME(CONCURRENCY)
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
The following table and graph show how PUSH_TIME parameter depend on CONCURRENCY
|
||||
parameter.
|
||||
|
||||
.. table:: Maximum, Minimum, Average and Percentile 90% of PUSH_TIME values in
|
||||
depend on CONCURRENCY parameter.
|
||||
|
||||
+-----------+-----------+-----------+-----------+--------------+
|
||||
|Concurrency|Maximum |Minimum |Average |Percentile 90%|
|
||||
+===========+===========+===========+===========+==============+
|
||||
|1 |19.54624987|18.28802991|18.60292332|18.85230837 |
|
||||
+-----------+-----------+-----------+-----------+--------------+
|
||||
|10 |158.930537 |21.7508142 |45.62607854|48.32535088 |
|
||||
+-----------+-----------+-----------+-----------+--------------+
|
||||
|30 |260.8910789|21.95701599|140.7167748|156.5025718 |
|
||||
+-----------+-----------+-----------+-----------+--------------+
|
||||
|50 |295.4358571|21.76140809|220.7136473|235.8214025 |
|
||||
+-----------+-----------+-----------+-----------+--------------+
|
||||
|100 |507.6230781|42.87186408|425.6215228|458.9536175 |
|
||||
+-----------+-----------+-----------+-----------+--------------+
|
||||
|
||||
.. image:: results/nexus-push.png
|
||||
:alt: PUSH_TIME
|
||||
:scale: 100
|
||||
|
||||
Pull action results
|
||||
-------------------
|
||||
PULL_TIME(ITERATION)
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
After simple processing results the following plots for pull action in depend on
|
||||
iteration number created (click to expand an image):
|
||||
|
||||
+----------------+----------------------------------------------------------+
|
||||
|Function |Plot |
|
||||
+================+==========================================================+
|
||||
|PULL_TIME |.. image:: results/nexus-1000-1/pull-1000-1.png |
|
||||
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=1) |
|
||||
|CONCURRENCY=1) | :scale: 20 |
|
||||
+----------------+----------------------------------------------------------+
|
||||
|PULL_TIME |.. image:: results/nexus-1000-10/pull-1000-10.png |
|
||||
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=10) |
|
||||
|CONCURRENCY=10) | :scale: 20 |
|
||||
+----------------+----------------------------------------------------------+
|
||||
|PULL_TIME |.. image:: results/nexus-1000-30/pull-1000-30.png |
|
||||
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=30) |
|
||||
|CONCURRENCY=30) | :scale: 20 |
|
||||
+----------------+----------------------------------------------------------+
|
||||
|PULL_TIME |.. image:: results/nexus-1000-50/pull-1000-50.png |
|
||||
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=50) |
|
||||
|CONCURRENCY=50) | :scale: 20 |
|
||||
+----------------+----------------------------------------------------------+
|
||||
|PULL_TIME |.. image:: results/nexus-1000-100/pull-1000-100.png |
|
||||
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=100) |
|
||||
|CONCURRENCY=100)| :scale: 20 |
|
||||
+----------------+----------------------------------------------------------+
|
||||
|PULL_TIME |.. image:: results/nexus-pull-1000-1_10_30_50_100.png |
|
||||
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY={1,10,30,50,100}|
|
||||
|CONCURRENCY={1, | :scale: 20 |
|
||||
|10,30,50,100} | |
|
||||
+----------------+----------------------------------------------------------+
|
||||
|
||||
PULL_TIME(CONCURRENCY)
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
The following table and graph show how PUSH_TIME parameter depend on CONCURRENCY
|
||||
parameter.
|
||||
|
||||
.. table:: Maximum, Minimum, Average and Percentile 90% of PULL_TIME values in
|
||||
depend on CONCURRENCY parameter.
|
||||
|
||||
+-----------+------------+-------------+------------+--------------+
|
||||
|Concurrency|Maximum |Minimum |Average |Percentile 90%|
|
||||
+===========+============+=============+============+==============+
|
||||
|1 |0.7448480129|0.04781007767|0.6843045886|0.7085263491 |
|
||||
+-----------+------------+-------------+------------+--------------+
|
||||
|10 |1.598811865 |0.07142710686|1.180489622 |1.346029782 |
|
||||
+-----------+------------+-------------+------------+--------------+
|
||||
|30 |4.289592028 |0.1032390594 |2.841079599 |3.127129436 |
|
||||
+-----------+------------+-------------+------------+--------------+
|
||||
|50 |6.079101086 |0.1912419796 |4.465888512 |4.781247687 |
|
||||
+-----------+------------+-------------+------------+--------------+
|
||||
|100 |10.95208812 |0.194712162 |9.210462797 |10.03164272 |
|
||||
+-----------+------------+-------------+------------+--------------+
|
||||
|
||||
.. image:: results/nexus-pull.png
|
||||
:alt: PULL_TIME
|
||||
:scale: 100
|
||||
|
||||
Issues which have been found during the tests
|
||||
=============================================
|
||||
|
||||
.. table:: Issues which have been found during the tests
|
||||
|
||||
+-------------------------------+---------------------------------------------+
|
||||
|Issue description |Root cause, Link |
|
||||
+===============================+=============================================+
|
||||
|| Nexus allows re-pushing || Docker 1.10 is known not to work with |
|
||||
|| existed docker layers instead|| Nexus 3.0m7 (1.10 was released after the |
|
||||
|| of answer with || 3.0m7 release) |
|
||||
|| "already exists" message || |
|
||||
+-------------------------------+---------------------------------------------+
|
||||
|| only 5 images can be uploaded|| Root cause of the issue haven't found yet |
|
||||
|| to Nexus at the || |
|
||||
|| same time || |
|
||||
+-------------------------------+---------------------------------------------+
|
||||
|
||||
.. references:
|
||||
|
||||
.. _Sonatype Nexus: http://www.sonatype.com/nexus/solution-overview/nexus-repository
|
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 41 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 37 KiB |
After Width: | Height: | Size: 37 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 68 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 63 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 23 KiB |
@ -0,0 +1,320 @@
|
||||
|
||||
.. _Measuring_performance_of_docker_registry:
|
||||
|
||||
***************************************************
|
||||
Results of measuring performance of Docker Registry
|
||||
***************************************************
|
||||
|
||||
:Abstract:
|
||||
|
||||
This document includes performance test results of `Docker Registry2`_ service
|
||||
as a repository of docker images. All test have been performed regarding
|
||||
:ref:`Measuring_performance_of_container_repositories`
|
||||
|
||||
|
||||
Environment description
|
||||
=======================
|
||||
Hardware configuration of each server
|
||||
-------------------------------------
|
||||
|
||||
.. table:: Description of servers hardware
|
||||
|
||||
+-------+----------------+------------------------+------------------------+
|
||||
|server |name |728998-comp-disk-228 |728998-comp-disk-227 |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |role |test_tool |registry |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |vendor,model |HP,DL380 Gen9 |HP,DL380 Gen9 |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |operating_system| | 3.13.0-76-generic | | 3.13.0-76-generic |
|
||||
| | | | Ubuntu-trusty | | Ubuntu-trusty |
|
||||
| | | | x86_64 | | x86_64 |
|
||||
+-------+----------------+------------------------+------------------------+
|
||||
|CPU |vendor,model |Intel,E5-2680 v3 |Intel,E5-2680 v3 |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |processor_count |2 |2 |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |core_count |12 |12 |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |frequency_MHz |2500 |2500 |
|
||||
+-------+----------------+------------------------+------------------------+
|
||||
|RAM |vendor,model |HP,752369-081 |HP,752369-081 |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |amount_MB |262144 |262144 |
|
||||
+-------+----------------+------------------------+------------------------+
|
||||
|NETWORK|interface_name |p1p1 |p1p1 |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |vendor,model |Intel,X710 Dual Port |Intel,X710 Dual Port |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |bandwidth |10G |10G |
|
||||
+-------+----------------+------------------------+------------------------+
|
||||
|STORAGE|dev_name |/dev/sda |/dev/sda |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |vendor,model | | raid10 - HP P840 | | raid10 - HP P840 |
|
||||
| | | | 12 disks EH0600JEDHE | | 12 disks EH0600JEDHE |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |SSD/HDD |HDD |HDD |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |size | 3,6TB | 3,6TB |
|
||||
+-------+----------------+------------------------+------------------------+
|
||||
|
||||
Network scheme and part of configuration of hardware network switches
|
||||
---------------------------------------------------------------------
|
||||
Network scheme of the environment:
|
||||
|
||||
.. image:: Network_Scheme.png
|
||||
:alt: Network Scheme of the environment
|
||||
|
||||
Here is the part of switch configuration for each switch port which connected to
|
||||
p1p1 interface of a server:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
switchport mode trunk
|
||||
switchport trunk native vlan 600
|
||||
switchport trunk allowed vlan 600-602,630-649
|
||||
spanning-tree port type edge trunk
|
||||
spanning-tree bpduguard enable
|
||||
no snmp trap link-status
|
||||
|
||||
Software configuration of the DockerRegistry service
|
||||
----------------------------------------------------
|
||||
Installation of Registry2:
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
.. code:: bash
|
||||
|
||||
echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" > /etc/apt/sources.list.d/docker.list
|
||||
apt-get update && apt-get -y install docker-engine
|
||||
service docker restart
|
||||
docker run -d -p 5000:5000 --name registry registry:2
|
||||
|
||||
.. table:: Versions of some software
|
||||
|
||||
+-----------+------------------+
|
||||
|Software |Version |
|
||||
+===========+==================+
|
||||
|Ubuntu |Ubuntu 14.04.3 LTS|
|
||||
+-----------+------------------+
|
||||
|Registry | |
|
||||
+-----------+------------------+
|
||||
|
||||
Operating system configuration:
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
You can find outputs of some commands and /etc folder in the following archive:
|
||||
|
||||
:download:`server_description_of_728998-comp-disk-227.tar.gz <configs/server_description_of_728998-comp-disk-227.tar.gz>`
|
||||
|
||||
Software configuration of the node with test tool
|
||||
-------------------------------------------------
|
||||
Test tool:
|
||||
^^^^^^^^^^
|
||||
Firstly we need to install docker-engine:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" > /etc/apt/sources.list.d/docker.list
|
||||
apt-get update && apt-get -y install docker-engine
|
||||
echo DOCKER_OPTS=\"--insecure-registry 172.20.9.16:5000\" >> /etc/default/docker
|
||||
service docker restart
|
||||
|
||||
We use Python2.7 and
|
||||
:ref:`Script for collecting performance metrics of docker repository` with
|
||||
:ref:`Proposed docker file` to perform the tests. The image size is a sum of
|
||||
layers:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
IMAGE CREATED CREATED BY SIZE COMMENT
|
||||
93333b8ed564 About a minute ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "/usr/s 0 B
|
||||
35d8142196c0 About a minute ago /bin/sh -c #(nop) EXPOSE 80/tcp 0 B
|
||||
3a63f30ab247 About a minute ago /bin/sh -c apt-get install -y nginx 18.14 MB
|
||||
97434d46f197 2 days ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B
|
||||
<missing> 2 days ago /bin/sh -c sed -i 's/^#\s*\(deb.*universe\)$/ 1.895 kB
|
||||
<missing> 2 days ago /bin/sh -c set -xe && echo '#!/bin/sh' > /u 194.5 kB
|
||||
<missing> 2 days ago /bin/sh -c #(nop) ADD file:e01d51d39ea04c8efb 187.8 MB
|
||||
|
||||
It means that DATA_SIZE=206.13 MB
|
||||
|
||||
.. table:: Versions of some software
|
||||
|
||||
+-----------+------------------+
|
||||
|Software |Version |
|
||||
+===========+==================+
|
||||
|Ubuntu |Ubuntu 14.04.3 LTS|
|
||||
+-----------+------------------+
|
||||
|Docker |1.10 |
|
||||
+-----------+------------------+
|
||||
|
||||
Operating system:
|
||||
^^^^^^^^^^^^^^^^^
|
||||
You can find outputs of some commands and /etc folder in the following archive:
|
||||
:download:`server_description_of_728997-comp-disk-228.tar.gz <configs/server_description_of_728997-comp-disk-228.tar.gz>`
|
||||
|
||||
Testing process
|
||||
===============
|
||||
1.
|
||||
Registry2 was installed on top of 728998-comp-disk-227 server as described in
|
||||
`Installation of Registry2:`_ section.
|
||||
|
||||
2.
|
||||
The values of the variables in test-repo.py script was changed:
|
||||
iterations = 1000
|
||||
concurrency = 1
|
||||
repo_address = "172.20.9.16:5000"
|
||||
|
||||
3.
|
||||
The following command was executed to perform the tests:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
sudo python test-repo.py
|
||||
|
||||
4.
|
||||
push_results.csv and pull_results.csv was saved in persistent folder.
|
||||
|
||||
5.
|
||||
The steps from 1 to 4 was repeated with the following values of the
|
||||
concurrency parameters: 1,10,30,50,100
|
||||
|
||||
Results
|
||||
=======
|
||||
Push action results
|
||||
-------------------
|
||||
PUSH_TIME(ITERATION)
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
After simple processing results the following plots for push action in depend on
|
||||
iteration number created (click to expand an image):
|
||||
|
||||
+----------------+----------------------------------------------------------+
|
||||
|Function |Plot |
|
||||
+================+==========================================================+
|
||||
|PUSH_TIME |.. image:: results/registry-1000-1/push-1000-1.png |
|
||||
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=1) |
|
||||
|CONCURRENCY=1) | :scale: 20 |
|
||||
+----------------+----------------------------------------------------------+
|
||||
|PUSH_TIME |.. image:: results/registry-1000-10/push-1000-10.png |
|
||||
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=10) |
|
||||
|CONCURRENCY=10) | :scale: 20 |
|
||||
+----------------+----------------------------------------------------------+
|
||||
|PUSH_TIME |.. image:: results/registry-1000-30/push-1000-30.png |
|
||||
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=30) |
|
||||
|CONCURRENCY=30) | :scale: 20 |
|
||||
+----------------+----------------------------------------------------------+
|
||||
|PUSH_TIME |.. image:: results/registry-1000-50/push-1000-50.png |
|
||||
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=50) |
|
||||
|CONCURRENCY=50) | :scale: 20 |
|
||||
+----------------+----------------------------------------------------------+
|
||||
|PUSH_TIME |.. image:: results/registry-1000-100/push-1000-100.png |
|
||||
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=100) |
|
||||
|CONCURRENCY=100)| :scale: 20 |
|
||||
+----------------+----------------------------------------------------------+
|
||||
|PUSH_TIME |.. image:: results/registry-push-1000-1_10_30_50_100.png |
|
||||
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY={1,10,30,50,100}|
|
||||
|CONCURRENCY={1, | :scale: 20 |
|
||||
|10,30,50,100} | |
|
||||
+----------------+----------------------------------------------------------+
|
||||
|
||||
PUSH_TIME(CONCURRENCY)
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
The following table and graph show how PUSH_TIME parameter depend on CONCURRENCY
|
||||
parameter.
|
||||
|
||||
.. table:: Maximum, Minimum, Average and Percentile 90% of PUSH_TIME values in
|
||||
depend on CONCURRENCY parameter.
|
||||
|
||||
+-----------+-----------+-----------+-----------+--------------+
|
||||
|Concurrency|Maximum |Minimum |Average |Percentile 90%|
|
||||
+===========+===========+===========+===========+==============+
|
||||
|1 |18.23183703|2.014497995|2.852927562|2.120845795 |
|
||||
+-----------+-----------+-----------+-----------+--------------+
|
||||
|10 |51.36455989|4.625913858|6.886669915|4.924576068 |
|
||||
+-----------+-----------+-----------+-----------+--------------+
|
||||
|30 |143.376904 |14.23889208|20.4385057 |14.57682798 |
|
||||
+-----------+-----------+-----------+-----------+--------------+
|
||||
|50 |45.15124679|21.27197409|24.59056571|24.24201851 |
|
||||
+-----------+-----------+-----------+-----------+--------------+
|
||||
|100 |254.9175169|20.78799295|66.44495539|133.36117 |
|
||||
+-----------+-----------+-----------+-----------+--------------+
|
||||
|
||||
.. image:: results/registry-push.png
|
||||
:alt: PUSH_TIME
|
||||
:scale: 100
|
||||
|
||||
Pull action results
|
||||
-------------------
|
||||
PULL_TIME(ITERATION)
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
After simple processing results the following plots for pull action in depend on
|
||||
iteration number created (click to expand an image):
|
||||
|
||||
+----------------+----------------------------------------------------------+
|
||||
|Function |Plot |
|
||||
+================+==========================================================+
|
||||
|PULL_TIME |.. image:: results/registry-1000-1/pull-1000-1.png |
|
||||
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=1) |
|
||||
|CONCURRENCY=1) | :scale: 20 |
|
||||
+----------------+----------------------------------------------------------+
|
||||
|PULL_TIME |.. image:: results/registry-1000-10/pull-1000-10.png |
|
||||
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=10) |
|
||||
|CONCURRENCY=10) | :scale: 20 |
|
||||
+----------------+----------------------------------------------------------+
|
||||
|PULL_TIME |.. image:: results/registry-1000-30/pull-1000-30.png |
|
||||
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=30) |
|
||||
|CONCURRENCY=30) | :scale: 20 |
|
||||
+----------------+----------------------------------------------------------+
|
||||
|PULL_TIME |.. image:: results/registry-1000-50/pull-1000-50.png |
|
||||
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=50) |
|
||||
|CONCURRENCY=50) | :scale: 20 |
|
||||
+----------------+----------------------------------------------------------+
|
||||
|PULL_TIME |.. image:: results/registry-1000-100/pull-1000-100.png |
|
||||
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=100) |
|
||||
|CONCURRENCY=100)| :scale: 20 |
|
||||
+----------------+----------------------------------------------------------+
|
||||
|PULL_TIME |.. image:: results/registry-pull-1000-1_10_30_50_100.png |
|
||||
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY={1,10,30,50,100}|
|
||||
|CONCURRENCY={1, | :scale: 20 |
|
||||
|10,30,50,100} | |
|
||||
+----------------+----------------------------------------------------------+
|
||||
|
||||
PULL_TIME(CONCURRENCY)
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
The following table and graph show how PUSH_TIME parameter depend on CONCURRENCY
|
||||
parameter.
|
||||
|
||||
.. table:: Maximum, Minimum, Average and Percentile 90% of PULL_TIME values in
|
||||
depend on CONCURRENCY parameter.
|
||||
|
||||
+-----------+------------+-------------+------------+--------------+
|
||||
|Concurrency|Maximum |Minimum |Average |Percentile 90%|
|
||||
+===========+============+=============+============+==============+
|
||||
|1 |0.7883470058|0.05074381828|0.6775195916|0.7058973074 |
|
||||
+-----------+------------+-------------+------------+--------------+
|
||||
|10 |1.59649086 |0.05712890625|1.113002464 |1.204397488 |
|
||||
+-----------+------------+-------------+------------+--------------+
|
||||
|30 |4.239136934 |0.1007189751 |2.70093091 |2.899113488 |
|
||||
+-----------+------------+-------------+------------+--------------+
|
||||
|50 |6.978290081 |0.131428957 |4.493998793 |4.860594058 |
|
||||
+-----------+------------+-------------+------------+--------------+
|
||||
|100 |13.00426912 |0.152477026 |8.819601912 |9.696622682 |
|
||||
+-----------+------------+-------------+------------+--------------+
|
||||
|
||||
.. image:: results/registry-pull.png
|
||||
:alt: PULL_TIME
|
||||
:scale: 100
|
||||
|
||||
Issues which have been found during the tests
|
||||
=============================================
|
||||
|
||||
.. table:: Issues which have been found during the tests
|
||||
|
||||
+-------------------------------+---------------------------------------------+
|
||||
|Issue description |Root cause, Link |
|
||||
+===============================+=============================================+
|
||||
|| only 5 images can be uploaded|| Root cause of the issue haven't found yet |
|
||||
|| to Registry at the || |
|
||||
|| same time || |
|
||||
+-------------------------------+---------------------------------------------+
|
||||
|
||||
.. references:
|
||||
|
||||
.. _Docker Registry2: https://docs.docker.com/registry
|
After Width: | Height: | Size: 39 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 41 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 41 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 52 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 17 KiB |
@ -10,3 +10,4 @@ Test Results
|
||||
:maxdepth: 2
|
||||
|
||||
mq_ha/index
|
||||
container_repositories/index
|
||||
|