【问题标题】:Artifactory large downloads failingArtifactory 大型下载失败
【发布时间】:2022-02-21 19:04:07
【问题描述】:

我的传奇故事:

我在 CentOS 7.4 系统上运行 Artifactory Pro 5.8.4,该系统使用 Artifactory 的内置 Nginx 服务作为反向代理。大多数情况下,在下载大型对象期间,连接失败。此外,在失败的连接中传输的最后几千字节的数据似乎是垃圾。结果,该文件在恢复时在中间某处有一个无效的部分。 失败时的 Nginx 日志提供以下错误消息:

2018/01/22 23:26:32 [错误] 884#0: *48048865 readv() 在读取上游时失败(104:对等方重置连接),客户端:12.2.178.130,服务器:~(?. +).artifactory.common.mycoolco.com, request: "GET /controller/release/20171218-2119-2aa9f0e8c32bf3f08dd96a97127204d1f400f895fa2e67100a3830861c0becb0bfae28244c058510c8312e98378c0b77251b4bb7926ceae2d465ce2d533b88dc HTTP/1.1", upstream: "http://127.0.0.1:8081/artifactory/controller/release/20171218-2119-2aa9f0e8c32bf3f08dd96a97127204d1f400f895fa2e67100a3830861c0becb0bfae28244c058510c8312e98378c0b77251b4bb7926ceae2d465ce2d533b88dc", host: "artifactory.common.mycoolco.com"

Artifactory 日志通常(但并非总是)有如下所示的错误:

2018-01-22 23:14:20,106 [http-nio-8081-exec-87] [WARN] (o.a.r.ArtifactoryResponseBase:137) - 客户端关闭请求 499:java.net.SocketTimeoutException

如有任何进一步的诊断建议,我们将不胜感激。

这不会影响任何明显的变化: 作为后续,我将通过编辑 nginx.conf 文件 (/etc/opt/rh/rh-nginx18/nginx/nginx .conf) 包含设置“worker_processes 2”(当前为 1),将 worker 连接从 1024 增加到 2048,并将 keepalive_timeout 从 65 更改为 130。

我们在 AWS 中托管了一个 Artifactory 实例,没有其他代理或负载均衡器;只有一个实例和一个指向私有 IP 地址的路由 53 条目。我们看到基线 CPU 使用率为 10%,每 15 分钟达到 100%……显然来自 java 进程。 java -version: openjdk version "1.8.0_161" OpenJDK Runtime Environment (build 1.8.0_161-b14) OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)。现在在 artifactory.version: 5.8.4

> --2018-03-08 22:09:42--  https://artifactory.common.mycoolco.com/controller/pre-release/20180308-2216-023a0b8309af8889
Resolving artifactory.common.mycoolco.com (artifactory.common.mycoolco.com)... 55.111.66.99
Connecting to artifactory.common.mycoolco.com (artifactory.common.mycoolco.com)|55.111.66.99|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1241911191 (1.2G) [application/octet-stream]
Saving to: ‘20180308-2216-023a0b8309af8889’

20180308-2216-c3499ea023a0b8309  86%[=============================================>        ]   1.00G   568KB/s    in 1m 31s 

2018-03-08 22:30:14 (857 KB/s) - Connection closed at byte 1079774172. Retrying.

--2018-03-08 22:30:15--  (try: 2)  https://artifactory.common.mycoolco.com/controller-os/pre-release/20180308-2216-023a0b8309af8889
Connecting to artifactory.common.mycoolco.com (artifactory.common.mycoolco.com)|55.111.66.99|:443... connected.
HTTP request sent, awaiting response... 206 Partial Content
Length: 1241911191 (1.2G), 162137019 (155M) remaining [application/octet-stream]
Saving to: ‘20180308-2216-023a0b8309af8889’

20180308-2216-c3499ea023a0b8309 100%[++++++++++++++++++++++++++++++++++++++++++++++=======>]   1.16G  1.08MB/s    in 0m 22s  

2018-03-08 22:32:38 (1.09 MB/s) - ‘20180308-2216-023a0b8309af8889’ saved [1241911191/1241911191]

top command showing java high cpu usage AWS cpu spikes

【问题讨论】:

  • 您是从本地存储库还是远程存储库下载文件?
  • 远程。我们在 AWS 中托管我们的 Artifactory 实例,并从多个远程位置进行访问。我们的 Artifactory 实例已经完美运行了一年多一点(自 2016 年 8 月以来),直到 1 月中旬出现此问题。
  • 抱歉,我误解了您的问题。这是一个本地仓库。
  • @user5905820 在 AWS 上安装的 Artifactory 和客户端之间是否有任何类型的代理/防火墙/负载均衡器?由于错误,看起来中间的某些东西决定切断通信。你看到的垃圾可能是这个工具产生的(可能是错误信息?)
  • @Dror-Bereznitsky Artifactory 似乎安装了 nginx,但我没有看到任何需要调整的设置。我们在 AWS 中托管了一个 Artifactory 实例,没有其他代理或负载均衡器;只是一个简单的指向私有 IP 地址的路由 53 条目。我们看到基线 CPU 使用率为 10%,每 15 分钟达到 100%……显然来自 java 进程。 java -version: openjdk version "1.8.0_161" OpenJDK Runtime Environment (build 1.8.0_161-b14) OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)。现在在 artifactory.version: 5.8.4

标签: wget artifactory large-files


【解决方案1】:

问题可能是由于proxy_max_temp_file_size。默认值为 1GB。检查proxy_max_temp_file_size 0 是否有帮助。

【讨论】:

  • 这可能值得一试,但如果文件大小限制可能导致套接字超时异常,尤其是服务器归咎于客户端的异常,我会感到惊讶?
  • 谢谢@sky67,我会尝试在下一次计划停机期间为 proxy_max_temp_file_size 变量添加一个较大的值。
【解决方案2】:

根据错误消息,问题似乎是远程存储库上的“套接字超时(MS)”参数(正如您在评论中提到的那样)。 为了解决问题,请转到 Artifactory UI --> 远程存储库 --> 编辑有问题的存储库 --> 转到高级选项卡 --> 编辑“套接字超时 (MS)”参数并扩展它。

如果这不是远程存储库而是远程实例上的本地存储库,则可能是 Artifactory 前面的代理存在问题。

【讨论】:

  • 谢谢你,Ariel,我会深入研究安装 NGINX 配置;我在 UI 的本地存储库选项卡中找到了我的存储库。我对 Artifactory 还很陌生,但我知道我的高技能团队几个月来一直在尝试确定根本原因……我们被难住了。再次感谢:非常感谢。
  • 祝你好运。
  • Nginx 没有太多设置,我在上面的帖子中描述的增加变量并没有什么明显的效果。
  • Artifactory 不会从本地存储库中剪切/终止下载。它没有选项...问题是代理/防火墙级别的 99.9%。
  • 再次感谢您,@Ariel。我无计可施。这个问题导致我的大多数用户下载失败。本地防火墙关闭,aws s3 规则已经好几个月没变了;他们允许每个人进行 http 和 https 访问。唯一可能的代理是 artifactory 中内置的 nginx 服务器,但我在本地进程的列表中没有看到 nginx 服务,并且对 nginx.conf 文件的修改没有影响任何明显的变化。遗憾的是,我负担不起支持,所以在我解决这个问题之前,我基本上被阻止了。
猜你喜欢
  • 2019-02-18
  • 2017-07-30
  • 2019-10-21
  • 1970-01-01
  • 2022-09-19
  • 2019-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多