Docker push下降"无法读取流:在套接字上读取意外的EOF'状态' 400'

时间:2017-10-16 08:34:45

标签: artifactory

我们在AWS上进行了一项神经测试设置,其中涉及AWS ELB和一个充当神器服务器的EC2实例。我们的设置是基于Docker的JFROG神器。

在推送特定图像(“平台图像”)时,我们正面临“插座上的意外EOF读取”错误,但我们能够将相同的图像推送到我们拥有的生产环境。这两种环境之间的区别在于我们在测试环境中使用AWS ELB和子域类型的docker注册表。在我们目前的产品中,我们没有ELB,而且docker注册表是端口绑定类型。

  

2017-10-16 06:48:37,967 [http-nio-8081-exec-9] [ERROR](o.a.a.c.r.ArtifactoryService:282) - 无法读取流:套接字读取意外的EOF   org.jfrog.storage.binstore.common.ClientInputStreamException:读取流失败:在套接字上读取意外的EOF           在org.jfrog.storage.binstore.common.ClientStream.read(ClientStream.java:36)〜[binary-store-core-1.0.2.jar:na]           在org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1792)〜[commons-io-2.4.jar:2.4]           在org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1769)〜[commons-io-2.4.jar:2.4]           在org.apache.commons.io.IOUtils.copy(IOUtils.java:1744)〜[commons-io-2.4.jar:2.4]

     

2017-10-16 06:48:37,968 [http-nio-8081-exec-9] [WARN](ojrdvrhDockerV2LocalRepoHandler:170) - 上传blob' platform-image / _uploads / e205ae95-2e43时出错-48c2-942e-a5aea659575c'获得地位' 400'和消息:'无法读取流:在套接字上读取意外的EOF'

请检查并告知我们这里可能存在的问题。我们并未针对所有图像面对此问题。但是和有问题的相同的图像,我们能够推动生产实例。

注意:相同的图像最初工作一次但是当我们在几天后尝试它不起作用。

所以我们怀疑这可能与我们的配置有关。如果您需要我们提供更多详细信息,请通知我们。

图片名称:platform-image 尺寸:15.2 GB。

我们的群集详情: AWS Classic ELB:1 Ec2-instance(i3.2xlarge):1

Nginx配置:

## server configuration
server {
    listen 443 ssl;
    listen 80 ;
    server_name ~(?<repo>.+)\.domain.com domain.com;

    if ($http_x_forwarded_proto = '') {
        set $http_x_forwarded_proto  $scheme;
    }
    ## Application specific logs
    access_log /var/log/nginx/docker-access.log;
    error_log /var/log/nginx/docker-error.log;
    rewrite ^/$ /artifactory/webapp/ redirect;
    rewrite ^/artifactory/?(/webapp)?$ /artifactory/webapp/ redirect;
    rewrite ^/(v1|v2)/(.*) /artifactory/api/docker/$repo/$1/$2;
    chunked_transfer_encoding on;
    client_max_body_size 0;
    location /artifactory/ {
    proxy_read_timeout  3200;
    proxy_pass_header   Server;
    proxy_cookie_path   ~*^/.* /;
    proxy_pass          http://localhost: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;
    }
}

1 个答案:

答案 0 :(得分:0)

经过调查,我们发现问题是由ELB配置引起的。 ELB空闲超时值设置为60秒默认值,并且artifactory在此时间内无法发送响应,因此连接已被ELB关闭。增加空闲超时值可以解决问题。

关于超时的Artifactory日志错误并不清楚,它更通用,这让我们思考很多方面。

谢谢。