SVN + Apache HTTPD-使用Jenkins多次结帐后,出现500内部服务器错误

问题描述

背景故事:
我们决定将SVN从本地迁移到云。
两台服务器均为CentOS 7,SVN版本本地为1.8.15,而云上为1.8.19;
访问协议从SVN(端口3690)更改为HTTPS(443),因此httpd设置很新颖。

对于存储库的迁移,我尝试在服务器之间进行简单的旧“ rsync”操作以移动整个存储库,并且由于功能和所有修订版都在那儿而已,但是我仍然遇到相同的错误
我认为这可能是某种数据库问题,因此我使用了SVN原生的“ svnadmin dump”和“ svnadmin load”命令来导入存储库。问题仍然存在。

我正在使用通过Apache HTTPD通过HTTPS访问的SVN。 一切似乎都工作正常,并且所有功能都在那里,但是经过几次检出后,我开始收到500 Internal Server Error。

当前,此问题是由Jenkins管道导致的,该管道从SVN检出,这是输出错误

ERROR: Failed to check out https://svn-repo/path/to/files
org.tmatesoft.svn.core.SVNException: svn: E175002: OPTIONS of '/path/to/files': 500 Internal Server Error (https://svn-repo)
svn: E175002: OPTIONS request Failed on '/path/to/files'

目前我不认为这是客户端(Jenkins)的问题,原因是因为从PC SVN客户端中签出时我遇到了相同的错误

这是来自HTTPD的日志:

10.10.10.16 - - [17/Aug/2020:12:45:21 +0300] "OPTIONS /path/to/files HTTP/1.
1" 401 381
10.10.10.16 - user [17/Aug/2020:12:45:21 +0300] "OPTIONS /path/to/files HTTP/1.1" 500 541

如您所见,我在获得500之前收到401,但正如我所说的那样,结帐是一个一个地进行的,因此如果授权无效(整个仓库的权限),则无法先前结帐。是完全相同的,不是基于路径的。)

旁注:401的出现是由于WEBSAV协议的定义:它允许未经身份验证的访问,因此它将始终首先尝试它。如果返回401,它将发送凭据。

----进度报告----
引起我注意的是,“ SVNAllowbulkupdates On”可能是导致此问题的原因。 我尝试同时使用“首选”和“关闭”来运行管道,但这并不能解决问题。

可能与之相关的问题: Large SVN checkout fails sporadically

我已成功将SVN升级到版本1.10。 再次升级并运行管道之后,我在SVN错误日志中看到以下错误

[Thu Oct 01 17:25:55.268333 2020] [dav:error] [pid 9465] [client 11.11.11.11:39580] Provider encountered an error while streaming a REPORT response. [500,#0]
[Thu Oct 01 17:25:55.268355 2020] [dav:error] [pid 9465] [client 11.11.11.11:39580] A failure occurred while driving the update report editor [500,#104]
[Thu Oct 01 17:25:55.268360 2020] [dav:error] [pid 9465] [client 11.11.11.11:39580] Connection reset by peer [500,#104]

由于日志指向客户端问题,因此我开始搜索与客户端相关的配置更改。在“〜/ .subversion /服务器”中添加了以下内容

http-timeout = 259200

来源:https://confluence.atlassian.com/fishkb/svn-operations-taking-longer-than-an-hour-time-out-229180362.html

不幸的是,这仍然没有帮助。

后来,我在端口443(tcpdump -nnS -i ens5 port 443)上执行了'tcpdump'命令,以查看传入/传出数据包的标头。我同时在Jenkins从站和SVN上同时运行了命令,发现它们在某一时刻停止了恰好一分钟的信息交换,此后SVN向Jenkins从站发送了一个会话终止数据包,后者试图稍后再发送信息,并终止连接:

17:14:56.976631 IP SVN > Jenkins-Slave: Flags [.],ack 4264260017,win 235,options [nop,nop,TS val 1054806523 ecr 1461582542],length 0
17:14:56.976961 IP SVN > Jenkins-Slave: Flags [P.],seq 394455454:394456190,length 736
17:14:56.983612 IP Jenkins-Slave > SVN: Flags [P.],seq 4264260017:4264260557,ack 394456190,win 279,TS val 1461582631 ecr 1054806523],length 540
17:14:56.983688 IP Jenkins-Slave > SVN: Flags [P.],seq 4264260557:4264260693,length 136
17:14:57.065351 IP SVN > Jenkins-Slave: Flags [.],ack 4264260693,win 252,TS val 1054806611 ecr 1461582631],length 0
17:15:57.124806 IP SVN > Jenkins-Slave: Flags [P.],seq 394456190:394457011,TS val 1054866672 ecr 1461582631],length 821
17:15:57.124832 IP SVN > Jenkins-Slave: Flags [F.],seq 394457011,length 0
17:15:57.125768 IP Jenkins-Slave > SVN: Flags [P.],seq 4264260693:4264260724,ack 394457012,win 300,TS val 1461642773 ecr 1054866672],length 31
17:15:57.125804 IP Jenkins-Slave > SVN: Flags [R.],seq 4264260724,TS val 1461642774 ecr 1054866672],length 0

出于明显的原因,我混淆了IP。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)