GoCD无法轮询变更
GoCD服务器会轮询所有“自动触发”管道的所有材料变更。默认情况下,轮询每分钟发生一次,每次针对十种材料。轮询间隔和同时轮询的材料数量是可配置的。
GoCD使用SCM命令来轮询变更。例如,要检查SVN存储库中的任何新变更,可以使用以下命令:
svn log --non-interactive --xml -v -r HEAD:'revision' 'repository-URL'
GoCD服务器使用的SCM命令可能由于无输出而挂起。无效的配置、网络问题、控制台输入阻塞等是一些原因。这样的情况会导致管道调度延迟,并导致性能下降。
这样的场景会通过Server Health中的警告通知给用户;点击时会显示类似于以下的消息。
我可以用这些信息做什么
当你看到类似上述的警告消息时
-
查找作为GoCD服务器子进程运行的进程
在Windows上,你可以使用工具比如进程资源管理器。在Linux上,你可以运行‘ps waux | grep ‘material-type’’
-
确定哪个进程挂起了。额外的信息如URL:
https://test@bitbucket.org/test/git_repo.git
在警告信息中应该能帮助你找到它。 -
在Linux系统上,你应该能看到这样的行:
go 31201 1 0 Feb07 ? 00:00:00 git clone https://test@bitbucket.org/test/git_repo.git /var/lib/cruise-server/pipelines/flyweight/b9ec0885-eb32-458c-bd6b-eeefe3ef9816
-
终止该进程及其所有子进程(整个进程树)。
-
确保Server Health中的警告消息消失。
请注意操作系统进程列表中文件夹名称(形式为…/flyweight/b9ec0885-eb32-458c-bd6b-eeefe3ef9816)。此文件夹被轮询命令使用。在GoCD安装目录中定位该文件夹并删除它(如果存在)。这确保了终止进程树后没有留下任何不一致的信息。
配置警告时间
GoCD服务器会在15分钟内(无输出)等待后向用户发出可能材料更新挂起的警告。用户可以通过系统属性修改此等待时间(以分钟为单位)。material.update.inactive.timeout
可以在文件中设置此系统属性wrapper-properties.conf
以添加上述系统属性。有关文件位置,请参阅安装文档。wrapper-properties.conf
参考资料: