如何解决“上游过早关闭连接”Nginx / Apache2错误
主题
对于长时间运行的下载,特别是通过反向代理和使用Docker这样的客户端,调整超时值可以解决意外超时的错误。
影响版本
Artifactory 6。X和7。X
问题描述
此问题通常发生在下载大文件时。在这种情况下,这些下载通常需要一分钟以上的时间。这个问题的另一个组成部分是在Artifactory应用程序前面有一个反向代理或负载均衡器。在这个问题上遇到最多麻烦的客户端是那些大块下载文件的客户端,比如Docker。
如果你遇到了这个问题,Docker客户端在拉一个大的层时会显示一个错误。你不会在Artifactory日志中发现任何错误,唯一的问题会被Nginx记录:201/03/18 15:39:12 [error] 11196#11196: *526 upstream过早地关闭连接,同时读取upstream,客户端:10.[…]], server: ~(?
此错误意味着上游(在本例中为Artifactory)关闭了连接。
解决问题
Artifactory的Apache Tomcat有一个隐藏的超时设置。在某些情况下,比如长时间运行的Docker Pull,会达到这个超时。当发生这种情况时,Tomcat会过早地关闭连接。当发生这种情况时,不会打印工件端错误。
默认情况下,Tomcat“connectionTimeout”参数设置为60秒。要解决大多数Docker Pull问题,将该值增加到600秒,或10分钟:(6。X- Directly update the tomcat server.xml]
<连接器端口="8081" sendReasonPhrase="true" relaxedPathChars='[]' relaxedQueryChars='[]' maxThreads="200" connectionTimeout="600000"/>
(7。X- Update the system.yaml]
artifactory:
tomcat:
连接器:
maxThreads: 200
extraConfig:“connectionTimeout = " 600000 " '
