Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux docker从Artifactory拉取结果为;net/http:请求已取消“;前后矛盾_Linux_Docker_Artifactory - Fatal编程技术网

Linux docker从Artifactory拉取结果为;net/http:请求已取消“;前后矛盾

Linux docker从Artifactory拉取结果为;net/http:请求已取消“;前后矛盾,linux,docker,artifactory,Linux,Docker,Artifactory,我们在docker容器中运行Artifactory 5.11.0(今天刚刚更新到6.0.2,还没有看到),当我们的自动化从Artifactory执行docker pull时,成功率为9/10倍。有时,即使在从托管工件的机器运行docker pull时,docker pull也会失败,原因如下: 正在提取“docker.{artifactoryURL}/staging:latest”。。。 来自守护程序的错误响应:Get.{artifactory url}/v2/staging/manifests

我们在docker容器中运行Artifactory 5.11.0(今天刚刚更新到6.0.2,还没有看到),当我们的自动化从Artifactory执行
docker pull
时,成功率为9/10倍。有时,即使在从托管工件的机器运行
docker pull
时,
docker pull
也会失败,原因如下:

正在提取“docker.{artifactoryURL}/staging:latest”。。。 来自守护程序的错误响应:Get.{artifactory url}/v2/staging/manifests/latest:Get.{artifactory url}:80/artifactory/api/docker/docker/v2/token?account=admin&scope=repository%3Astaging%3Apull&service=docker.{artifactory url}%3A80: net/http:请求已取消(等待时超过Client.Timeout) 标题)

正如我所说,大多数情况下,这是完美的工作,但1/10(可能更少)我们得到上述错误在我们的自动化建设。我试着在一个晚上的while循环中运行
docker pull
,直到它遇到故障,没有出现故障。运行ping一夜,没有丢失任何数据包

操作系统:Debian 9 x64

Docker版本17.09.0-ce,构建afdb6d4,在Docker版本18.03.1~ce-0~debian中出现的频率似乎更高,但我没有直接证据表明客户有错。

以下是JFrog为我提供的解决此问题的方法。(注意:当时我们使用的是旧版本的Artifactory,他们建议我们将其更新为最新版本,因为有几个更新可能会有所帮助)

RAM值-xmx2g是Artifactory提供的默认值。我们可以通过进入Docker容器“Docker exec-it artifactory bash”来增加该值
然后是$Artifactory\u Home/bin/Artifactory.default(主要是:-/opt/jfrog/Artifactory/bin/Artifactory.default),我们可以相应地更改RAM值。请点击此链接了解更多信息。
我们还应该更改访问最大线程数,我们可以通过转到$Artifactory\u Home/tomcat/config/server.xml并将其更改为:
在/var/opt/jfrog/artifactory/etc/artifactory.system.properties中添加以下行
artifactory.access.client.max.connections=200
为了处理重载,我们需要在/var/opt/jfrog/artifactory/etc/db.properties中添加下面的行。有关更多信息,请遵循此链接。
池最大活动=200
另外,他们告诉我,在使用Artifactory而不是user/pass登录验证docker客户端时,要确保我们使用的是API密钥,因为后者将通过我们的ldap验证,而前者不会:

可以尝试使用API密钥而不是纯文本密码,因为使用API密钥不会接触LDAP服务器

我们已经这样做了,所以这对这个问题没有影响

也张贴在这里:


我希望这对我们有帮助。

我们刚刚又发生了这种情况,我立即检查了Artifactory日志。我甚至没有在artifactory.log中看到“为repo获取docker清单…”条目。那么,这可能是一个网络问题吗?如果发出请求,Artifactory是否至少会记录请求?如果它收到一些请求,它会记录一些失败吗?你曾经设法解决过这个问题吗?我们也看到了这个问题,我在互联网上搜索了一下,找不到任何帮助,我要向Artifactor提交一张支持票嘿,我看到你对相应的JFrog JIRA票(RTFACT-17919)的评论,希望JFrog能在我之前插话。他们最终确实向我发送了一些更新的配置选项,这些选项有助于缓解这一问题(几乎将其完全删除)。我认为我的进一步调整可能会使这一切完全消失,但现在这种情况太少了,我对我们现在的处境感到满意。我会把他们给我的东西挖出来,贴在这里和票上。我今天应该能把这个给你。我想至少现在就发布这篇文章,所以你知道它即将发布。这篇文章不会太长,你可以将它包含在你的答案中,以防止你的答案在链接失效时变得无关紧要。只是一个想法:)好主意。我会的。
The RAM value -Xmx 2g was the default value provided by Artifactory. We can increase that value by going into the Docker container "docker exec -it artifactory bash"
and then $Artifactory_Home/bin/artifactory.default ( Mostly: - /opt/jfrog/artifactory/bin/artifactory.default) and we can change the RAM value accordingly. Please follow this link for more information.

We should also change the access max threads count and we can do that by going to $Artifactory_Home/tomcat/config/server.xml and change it to:

        <Connector port="8040" sendReasonPhrase="true" maxThreads="<200>"/>

Also add below line in /var/opt/jfrog/artifactory/etc/artifactory.system.properties

        artifactory.access.client.max.connections=200

To deal with heavy loads we need to append the below line  in /var/opt/jfrog/artifactory/etc/db.properties.Please follow this link for more information.

        pool.max.active=200