如何解决“暂停”的索引器状态(积压中的n)


12

被配置为按计划更新的索引器之一被锁定为“已暂停”状态,并且不再获取更新。

输出 bin/magento indexer:status

+----------------------------+------------------+-----------+-------------------------------+---------------------+
| Title                      | Status           | Update On | Schedule Status               | Schedule Updated    |
+----------------------------+------------------+-----------+-------------------------------+---------------------+
| ...                        |                  |           |                               |                     |
| IntegerNet_Solr            | Reindex required | Schedule  | suspended (101028 in backlog) | 2018-09-24 15:28:44 |
| ...                        |                  |           |                               |                     |
+----------------------------+------------------+-----------+-------------------------------+---------------------+

其他人会idle (0 in backlog)在“计划表更新”列中显示当前时间,因此索引器计划表通常可以正常工作。

我该如何解决?

Answers:


8

我发现,状态已设置为\Magento\Framework\Mview\View::suspend()并已在中删除\Magento\Framework\Mview\View::resume()

仅在\Magento\Indexer\Model\Indexer::reindexAll()强制完全重新编制索引之前才调用这些方法来挂起计划的索引编制,然后在发生异常或异常发生后恢复它。

但是,如果该过程无一例外地终止,例如被杀死,分段错误或什至遇到不可恢复的致命错误,则状态将保持“挂起”状态,并且无法恢复该状态。

解决方案:确保确实没有运行完全的重新索引,然后通过SQL更新状态。

您将通过以下方式找到所有状态:

select * from mview_state;

并像这样更新它:

update mview_state set status='idle' where view_id='integernet_solr';

您是否找到了完整的证明解决方案?
Vivek Kumar

1

您不需要编辑数据库就可以这样做,您可以通过以下方式进行相同的操作:重置和建立索引器,然后使用以下命令重新为其建立索引;

php bin/magento indexer:reset

php bin/magento indexer:reindex

1
那是我尝试的第一件事,但是它只重置状态(即“进行中”),而不重置mview状态
Fabian Schmengler

我不确定是否再次触发完全重新索引是否
行得通

在我的情况下,我遇到了同样的问题,该过程被暂停,以上对我来说是有效的。虽然是magento2.1.x。
Vivek Kumar

谢谢,我将做一些尝试以了解更多信息:)
Fabian Schmengler

1
我发现重置php bin / magento indexer:reset并没有更改被挂起的标志,但是确实做到了这一点,因此我可以正确地重新建立索引,并将标志更改回空闲状态。我建议使用:上面建议的php bin / magento indexer:reset。
jrossi
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.