团队城市无法发布构件并停止构建

7
我遇到了一个非常难以解决的TeamCity问题,我们有一个运行在8080端口的TeamCity服务器,还有两个代理分别连接在9090和9091端口。代理已经成功注册,能够接受新构建任务。当构建完成、测试通过并且日志中显示 "Sending artifacts" 时,所有事情都停止了,而构建物从未到达服务器。我将其放置过夜后请求停止构建也无法奏效。我们最近切换了一个新的防火墙,但在设置了8080、9090和9091的端口规则后一切正常,没有任何更改但现在就不工作了。服务器上的日志显示失败,我可以看到几个地方的日志,其中包括:"jetbrains.buildServer.SERVER - Failed to upload artifact, due to error: org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. Read timed out"和"jetbrains.buildServer.AGENT - Failed to publish artifacts because of error: java.net.SocketException: Connection reset by peer: socket write error, will try again." 。围绕这些问题的防火墙日志显示所有预计端口流量均被允许通过。但有些日志看起来很奇怪,如:"2016-04-01 10:45:00 Deny [sourceIp] [targetIP] 49426/tcp 8080 49426 0-External Firebox tcp syn checking failed (expecting SYN packet for new TCP connection, but received ACK, FIN, or RST instead). 558 113 (Internal Policy) proc_id="firewall" rc="101" msg_id="3000-0148" tcp_info="offset 5 A 478076245 win 258"". 检查代理上的端口49426显示这是由Java.exe使用的。我认为这可能与TeamCity有关,因为它在JVM中运行。下一步是搜寻所有配置文件,以找出这个端口号从哪里来。经过一段时间,代理决定重试并更换了端口。看起来Java只是使用任意端口(好像在代码中没有分配),所以代理配置中是否缺少一些内容来指示它上传构建物时使用的端口?我读到某个地方,也许服务器或防火墙不喜欢超过某个大小的请求或文件上传(最大文件是81兆),但我们没有发现任何迹象表明已经存在这样的规则。虽然TeamCity版本较旧(v7.1.1),但我们目前无法升级(由于硬盘空间问题,我正在等待批准使用更新、更大的服务器)。 更新 我们曾经短暂地打开了防火墙,以确定它是否是问题的原因,但没有效果。此时我并不认为防火墙是问题所在。
有什么想法吗? 提前感谢。 更新 2 我最终设置了一个全新的构建服务器,在那里一切都正常运作。新服务器拥有最新的TeamCity版本,但代理服务器是相同的,且艺术品上传看起来也正常。虽然这不算是问题的解决办法,但至少我现在有一个工作正常的设置。
1个回答

0
这可能是由于代理程序启动过慢而无法发送数据造成的。Jetbrains员工Pavel Sher提供的此解决方法可能会有所帮助:
server.xml文件中增加connectionTimeout值。
    <Connector port="8111" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8543"                
               enableLookup="false"
               useBodyEncodingForURI="true">

从20000到60000甚至更多。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接