【问题标题】:Why are my artifactory and archiva downloads hanging over VPN?为什么我的人工制品和档案下载挂在 VPN 上?
【发布时间】:2012-10-11 16:06:36
【问题描述】:

我遇到了一个非常奇怪的问题,我不确定发生了什么。我尝试了很多排列,但我无法解决这个问题。任何见解将不胜感激。这是我的环境:

我已经在只能通过 Cisco VPN 访问的临时区域建立了档案和人工仓库。我不需要两个缓存,但我都尝试过尝试解决问题。

我使用 gradle 构建我的软件,但这似乎不是问题。当我的项目构建时,它会愉快地下载 POM 和 JAR 很长一段时间。然而,每次它都会“卡在”罐子上。对于下载的特定本地快照,我可以运行构建 N 次,它会挂在同一个位置。如果我删除本地缓存,它可能会挂在不同的 jar 上。

VPN 传输速率不是很好(100-200K/s),在它挂起之前,它会显着减慢,一直到 0。此外,如果我在暂存区服务器中构建,则传输超过10G 网络,一切正常。

我已经使用 wget 下载了 jars,输出通常如下所示:

/tmp > wget -vS http://git-jenkins01.aus.sf:8082/artifactory/ecomm-snapshot-plus-remote/org/codehaus/groovy/groovy/1.8.6/groovy-1.8.6.jar
--2012-10-11 09:51:41--  http://git-jenkins01.aus.sf:8082/artifactory/ecomm-snapshot-plus-remote/org/codehaus/groovy/groovy/1.8.6/groovy-1.8.6.jar
Resolving git-jenkins01.aus.sf (git-jenkins01.aus.sf)... 10.57.10.226
Connecting to git-jenkins01.aus.sf (git-jenkins01.aus.sf)|10.57.10.226|:8082... connected.
HTTP request sent, awaiting response... 
  HTTP/1.1 200 OK
  Server: Artifactory/2.6.4
  X-Artifactory-Id: 583c10bfdbd326ba:71d02e01:13a5059d090:-8000
  Last-Modified: Thu, 09 Feb 2012 17:57:32 GMT
  ETag: 553ca93e0407c94c89b058c482a404427ac7fc72
  X-Checksum-Sha1: 553ca93e0407c94c89b058c482a404427ac7fc72
  X-Checksum-Md5: e7ddf15d2f343537549dbbfd860c5f5b
  Content-Disposition: attachment; filename=groovy-1.8.6.jar
  X-Artifactory-Filename: groovy-1.8.6.jar
  Content-Type: application/java-archive
  Content-Length: 5546084
  Date: Thu, 11 Oct 2012 15:51:47 GMT
Length: 5546084 (5.3M) [application/java-archive]
Saving to: `groovy-1.8.6.jar.7'

95% [======================================================================================================================================>       ] 5,278,650   --.-K/s  eta 3s  

它总是在 ~90% 或更多时停止,但不会完成。日志没有给出错误指示。我已经尝试过 tomcat 6、tomcat 7、jetty、java 6、java 7,artifactory 服务器中的一个 squid 代理,试图将其诱骗到本地下载。

我与 Charles 一起检查了流量并查看了日志,据我所知,服务器认为它发送了所有数据,而客户端在等待最后几个字节时卡住了。我完全没有想法。有什么想法吗?

【问题讨论】:

    标签: tomcat jetty vpn artifactory archiva


    【解决方案1】:

    我看到这种情况是由于巨型数据包被转换为标准 TCP/IP 数据包所致。 发生的事情是 Tomcat 默认发送大型巨型数据包(缓冲区大小 -MTU- 为 9000 字节),由于网络不支持巨型数据包,因此网络路由器会将其切割成更小的数据包。 因此,在某些时候,Tomcat 发送“数据包结束”块,该块在所有其他子数据包到达之前“收到”。结论,在收到所有数据之前它挂起或断开连接。

    解决方法是将tomcat server.xml中的缓冲区大小更改为1500左右,或者强制服务器的TCP/IP卡配置为1500 MTU(对于1G本地网络来说很烦人)。

    希望这会有所帮助。

    【讨论】:

    • 谢谢,我自己永远也想不通。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多