陈同学
微服务
Accelerator
About
# 上传Maven组件时不断重试&Broken pipe > 记录一个小问题 ## 问题介绍 在云服务器(公网)上装了Nexus作为Maven私服,Nexus使用Nginx代理 在IDE中进行maven deploy时(注:测试时直接IDE deploy)不断重现以下日志: ```nginx org.apache.maven.wagon.providers.http.httpclient.impl.execchain.RetryExec execute INFO: I/O exception (java.net.SocketException) caught when processing request to {}->http://repo.xxx.com:80: Broken pipe ``` 上述日志出现一段时间后,最后报错: ```nginx [ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project xdo: Failed to deploy artifacts: Could not transfer artifact com.hscf:xdo:jar:1.0.0 from/to dlrepo (http://repo.xxx.com/repository/dlrepo/): Protocol wrong type for socket -> [Help 1] ``` ## 问题排查 * 上传其他组件到该公网repo,可正常上传 => repo本身没问题 * 上传当前组件到内网repo,可正常上传 => 组件没问题 * 由此猜测是nginx代理问题,查看Nginx日志,发现: ```nginx 101.231.252.114 - developer [31/May/2018:12:30:35 +0800] "PUT /repository/dlrepo/com/hscf/xdo/1.0.0/xdo-1.0.0.jar HTTP/1.1" 413 208 "-" "Apache-Maven/3.0.5 (Java 1.8.0_101; Mac OS X 10.11.6)" ``` 非常熟悉的nginx **413** 状态, 说明Nginx设置的request body太小。因为是新安装的Nginx,因此 **client_max_body_size** 是默认值1M。 > 可参考:[nginx官网 client_max_body_size](http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size) 查看当前组件,发现好几个依赖的jar包,约15M. ## 问题解决 配置request body的最大值为 100m即可,配置后重新deploy,上传成功. ```nginx server { ... client_max_body_size 100m; location / { ... } } ``` ## 小结 已将client_max_body_size的设置补充到nginx安装和配置手册,避免下次出现类似问题
本文由
cyj
创作,可自由转载、引用,但需署名作者且注明文章出处。
文章标题:
上传Maven组件时不断重试&Broken pipe
文章链接:
https://chenyongjun.vip/articles/39
扫码或搜索 cyjrun 关注微信公众号, 结伴学习, 一起努力