我们在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;
}
}
答案 0 :(得分:0)
经过调查,我们发现问题是由ELB配置引起的。 ELB空闲超时值设置为60秒默认值,并且artifactory在此时间内无法发送响应,因此连接已被ELB关闭。增加空闲超时值可以解决问题。
关于超时的Artifactory日志错误并不清楚,它更通用,这让我们思考很多方面。
谢谢。