インデクサーのステータスを「一時停止」に解決する方法(バックログのn)


12

スケジュールに従って更新されるように構成されているインデクサーの1つが "中断"状態でロックされており、更新されなくなりました。

の出力 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)のユーザーは、[スケジュールの更新]列に現在の時刻を表示しているため、インデクサースケジュールは通常は機能しています。

どうすればこれを解決できますか?

回答:


8

ステータスがに設定され\Magento\Framework\Mview\View::suspend()、で削除されることがわかりました\Magento\Framework\Mview\View::resume()

これらのメソッドは\Magento\Indexer\Model\Indexer::reindexAll()、強制的な完全な再インデックスの前にスケジュールされたインデックスを一時停止し、その後、または例外が発生した場合に再開するためにのみ呼び出されます。

ただし、プロセスが例外なく終了した場合、たとえばkilled、segfaulted、または回復不可能な致命的なエラーが発生した場合、ステータスは「suspended」のままで、再開する手段はありません。

解決策:完全な再インデックスが実行されていないことを確認してから、SQLを使用してステータスを更新します。

あなたはすべてのステータスを見つけるでしょう:

select * from mview_state;

次のように更新します。

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

完全な証明ソリューションを見つけることができましたか?
Vivek Kumar 2018

1

これを行うためにデータベースを編集する必要はありません。次のコマンドを使用して、インデクサーをリセットしてから再度インデックスを作成することで同じことができます。

php bin/magento indexer:reset

php bin/magento indexer:reindex

1
、MVIEW状態ではない、私が試した最初のものだったが、それだけで(「進行中」、すなわち)のステータスをリセットする
ファビアンSchmengler

完全な再インデックスをトリガーすることが機能したかどうかは
わかり

プロセスが中断された私の場合も同じ問題がありましたが、上記でうまくいきました。しかし、それはmagento 2.1.xでした。
Vivek Kumar

おかげで、詳細を確認するために少し実験を行います:)
Fabian Schmengler '24

1
私はリセット、php bin / magento indexer:resetが中断されたフラグを変更しないことを発見しましたが、適切に再索引付けできるようにし、フラグをアイドルに戻しました。上記のphp bin / magento indexer:resetの使用をお勧めします。
jrossi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.