故障排除服务器安装

本文档介绍了一个初始的故障排除步骤,如果您在私有服务器上遇到Circleci安装问题。如果您的问题未解决,则可以生成支持捆绑包并联系Circleci支持工程师开设支持票

生成支持捆绑

要下载支持捆绑包,请选择支持从管理控制台菜单栏中,然后选择下载支持包。Circleci支持工程师通常会要求支持捆绑包来帮助诊断/修复您正在遇到的问题。

调试队列构建

如果您的服务组件很好,但是构建没有运行,或者所有构建都在排队,请遵循以下步骤。

1.检查Dispatcher日志以获取错误

运行sudo docker日志调度程序,如果您看到没有错误的日志输出,则可以继续下一步。

如果日志调度程序容器不存在或关闭,请通过运行来启动它sudo docker start 命令并监控进度。以下输出表示日志调度程序已启动并正确运行:

1月4日22:38:38.589:+0000 INFO circle.backend.build.run-queue dispatcher模式是on -不需要运行队列1月4日22:38:38.589:+0000 INFO circle.backend.build。使用队列5a4ea0047d560d00011682dc: GERey/realitycheck/37 ->转发到运行队列1月4日22:38:38.589:+0000信息循环。使用-队列5a4ea0047d560d00011682dc:发布:使用-更改(:重复)事件1月4日22:38:39.069:+0000信息循环。获取5a4ea0047d560d00011682dc(完成构建)的使用-队列事件

如果您看到错误或没有看到上面的输出,请调查堆栈跟踪,因为它们表明从1.0到2.0路由构建存在问题。如果输出中有错误,那么您可能在将构建路由到1.0或2.0构建时遇到问题。

如果您可以运行1.0构建,但不能运行2.0构建,或者如果您只能运行2.0构建,并且日志分派器已经启动并运行,那么继续执行下一个步骤。

2.检查Picard-Dispatcher日志是否有错误

跑过sudo docker logs picard-dispatcher命令。健康皮卡德调度员应该输出以下内容:

1月9日19:32:33信息Picard-Dispatcher.init仍在运行...... 1月9日19:34:33信息Picard-Dispatcher.init仍在运行...... 1月9日19:34:44信息Picard-Dispatcher.Core拍摄build = gerey / realityCheck / 1月9日19:34:45信息circle.http.builds project gerey / neimitycheck在修订版2c6179654541ee3d成功获取和解析.circleci / config.yml picard-displatcher.tasks build gerey / realitycheck / 38正在使用资源类{:cpu 2.0,:ram 4096,:class:medium} picard-displatcher.tasks for build = gerey / realitycheck / 38,stage =:write_artifacts,partent = 1月9日19:34:45信息Picard-Dispatcher.Tasks Build具有匹配的作业:Build = Gerey / RealityCheck / 38解析=:Write_Arifacts传递=:write_artifacts

输出应该填入上述消息。如果这是一个缓慢的一天,构建不经常发生,输出将出现如下:

1月9日19:32:33.629:+0000信息Picard-Dispatcher.init仍在运行......

当您运行一个构建时,您应该会看到上面的消息,表明它已经被分派到调度程序。如果没有看到上述输出,或者在picard-dispatcher容器中有堆栈跟踪,请联系support@www.drag240sx.com.

如果运行2.0构建,并且在picard-dispatcher日志输出中没有看到消息,则通常表明在dispatcher和picard dispatcher之间丢失了一个作业。

在端口8800处的管理控制台中停止并重新启动Circleci应用程序以重新建立两个容器之间的连接。

3.检查Picard-Scheduler日志是否出错

运行sudo docker logs picard-scheduler。该皮卡德调度员计划作业并通过直接连接将它们发送到Nomad。它实际上并没有处理circleci中的作业的排队。

4.检查Nomad节点状态

通过运行来检查是否有任何Nomad节点Nomad node-status --allocs命令,并查看以下输出:

ID DC名称类排水状态运行Allocs EC2727C5 US-EAST-1 IP-127-0-0-1 Linux-64bit False Ready 0

如果您没有看到列出的任何Nomad客户端,请咨询我们有关管理和排除Nomad Server的更多详细信息。

输出中的DC代表数据中心,并将始终打印US-EAST-1,应留下。它不会影响或打破任何东西。最重要的是漏极,状态和Allocs列。
  • 排水——如果排水真正然后CircleCI将将工作分配给游牧客户。可以通过运行以下命令更改此值nomad节点-drain [options] <节点>。如果你排水到真正,它将完成当前正在运行的作业,然后停止接受构建。当分配的数目达到0时,终止实例是安全的。如果排水被设定为这意味着节点正在接受连接并应该进行构建。

  • 状态- 如果状态是准备然后它已准备好接受构建,应该正确连接。如果它没有正确连接,它就不会显示准备它应该被调查,因为没有显示的节点准备在状态下不会接受构建。

  • Allocs.- Allocs是用于引用构建的术语。因此,运行Allocs的数量是单个节点上运行的构建数。此数字表示构建是否是路由。如果所有的构建器都运行Allocs,但您的作业仍然排队,这意味着您没有足够的容量,并且需要向船队添加更多构建者。

如果您看到类似于上面的输出,但是您的构建仍然在排队,那么继续下一步。

5.检查作业处理状态

跑过sudo docker执行-it Nomad Nomad状态命令查看当前正在处理的作业。它应该列出每个作业的状态以及作业的ID,如下所示:

ID类型优先状态5a4ea06b7d560d000116830f-0-build- gery -realitycheck-1批50死5a4ea0c9fa4f8c0001b6401b-0-build- gery -realitycheck-2批50死5a4ea0cafa4f8c0001b6401c-0-build- gery -realitycheck-3批50死

工作完成后,状态显示。这是工作的常规状态。如果状态显示跑步,作业目前正在运行。这应该出现在Circleci应用程序构建仪表板中。如果它未出现在应用程序中,则输出处理器可能存在问题。跑过Docker Logs Picard-输出处理器命令并检查日志中是否有任何明显的堆栈跟踪。

  • 如果任务是常数没有拨出的状态,运行sudo docker执行-it Nomad Nomad Status Job_ID命令要查看Nomad的位置,然后参考标准Nomad群集错误文档以获取信息。

  • 如果作业正在运行/死亡,但Circelci应用程序没有:

    • 通过运行命令检查Nomad作业日志sudo docker exec-it nomad nomad logs --stderr --job job_id命令。

    • 跑过picard-output-processor命令查看特定错误的这些日志。

指某东西的用途-如果存在特定的错误,则打印该错误。

为什么我的工作还留在家里排队状态,直到它们失败且从未成功运行?

如果Nomad客户端日志包含以下错误消息键盘,请检查端口8585:

{“错误”:“rpc错误:code =不可用的desc = grpc:连接不可用”,“lock”:“警告”,“msg”:“错误获取配置,重试”,“时间”:“2018-04-17t18:47:01z“}

为什么缓存解压缩失败?

如果一个restore_cache.步骤失败了您的工作之一,值得选中缓存的大小 - 您可以从Circleci作业页面查看缓存大小restore_cache.的一步。我们建议将缓存大小保持在500MB以下——这是损坏检查的上限,因为超过这个上限,检查时间就会过长。允许较大的缓存大小,但可能会导致问题,因为在下载过程中解压问题和损坏的几率更高。为了减小缓存的大小,可以考虑分割成多个不同的缓存。

如何避免API服务受到高线程数的影响?

通过完成以下步骤禁用缓存变暖:

  1. 增加出口DOMAIN_SERVICE_REFRESH_USERS = false国旗的`/ etc / circleconfig / api-service / customizations服务机器上的文件。有关配置覆盖的更多信息,请参阅指南服务配置覆盖

  2. 重启circleci:

    1. 导航到管理控制台

    2. 点击立即停止并等待它停止

    3. 单击开始