XRAY:索引旧版本的问题

Yuvarajan Johnpaul
2023-01-22 11:06

症状:

所有新的构建扫描和工件扫描都按预期工作。但是,旧的构建扫描不起作用。

RabbitMQ拥有两种不同类型的队列,如这里所述(当索引时)。
//www.si-fil.com/knowledge-base/jfrog-xray-rabbitmq-queues/

特别是在两个队列中indexExistingContent负责通过索引存储库触发的现有构件的索引。

这些案例背后的原因是什么?

  • Artifactory和Xray之间的通信可能由于某种原因丢失,这导致请求卡在索引队列中。
  • 如果资源不足以2022世界杯阿根廷预选赛赛程让x射线服务器处理大量并发扫描请求。

故障排除步骤:

Step-01:

由于RabbitMQ负责索引任务,因此有必要验证RabbitMQ数据库服务器的状态,以了解问题的根本原因。

检查RabbitMQ的消息队列,特别是indexExistingContent尽管Artifactory和Xray之间没有活动的事务,但仍然持有更多的消息。如果消息数更多,可能是RabbitMQ服务器在处理请求时卡住了。对Xray服务器执行停止操作,并检查RabbitMQ是否仍在运行。netstat -tulpn将显示RabbitMQ是否仍在监听端口5672。

如果该服务仍在此端口上侦听,则需要清除该进程并重新启动Xray服务。这可能有助于我们清除被卡住的信息。

Step-02:

如果上述方法不能改善行为,我们需要检查是否有过时的条目仍然阻塞相应的数据库表。

登录PostgreSQL数据库,验证event_states表格SELECT * from event_states;

要查找特定于特定存储库路径的条目,可以使用以下命令。SELECT * from event_states where art_path LIKE '';

如果最近没有调用活动扫描,但表显示表示相关存储库和构建引用的项,则表明存在问题。我们需要清除卡住的条目,然后针对现有内容调用新的扫描。在执行删除这些过时条目之前,请确保服务已停止(x射线)并且没有活动扫描正在进行中。从event_states中删除art_path LIKE '%REPO_NAME%'和action = 'created';

重要提示:
尽管我们执行这个查询是为了清除陈旧的进程,但考虑到执行查询可能需要时间和资源利用率,建议在预定的维护窗口[或]以外的工作时间执行这个查询。

Step-03:

如果尽管清除了相关构建的过时条目,问题仍然存在,我们需要检查DB是否有任何导致DB性能下降的死元组。您可以使用以下命令来识别失效元组(如果有的话)。
选择schemaname,
relname,
n_tup_ins,
n_tup_upd,
n_tup_del,
n_live_tup,
n_dead_tup,
last_vacuum,
last_autovacuum,
last_analyze,
last_autoanalyze
从pg_stat_all_tables
WHERE schemaname = 'public order by n_dead_tup desc ';

如果存在死元组,则对数据库执行真空任务会有所帮助。始终建议在咨询dba之后和非工作时间执行此类真空任务。