提供されたデータに基づいて説明するのは難しいですが、私の推測です。明らかなレイテンシ・ソース(パーシスタンスにリンクされているレイテンシ・ソース)をチェックし、でRedisコマンドがCPUを酷使していないこと、そしてPython-rqでピックされたジョブ・データのサイズが巨大ではないと思います。
ドキュメントによると、Python-rqはジョブをハッシュオブジェクトとしてRedisに挿入し、Redisは関連するキー(500秒がデフォルト値のようです)を期限切れにしてジョブを削除します。何らかの重大なスループットがある場合、Redisには多くのアイテムが期限切れになるのを待っています。その数は保留中のジョブに比べて高くなります。
INFOコマンドの結果で期限切れになるアイテムの数を確認することで、この点を確認できます。
Redisの有効期限は、イベントループ(擬似バックグラウンドモード、100 msごと)で実行されるキーサンプリングに基づくアクティブなメカニズムと、キーにアクセスするときに適用される遅延メカニズムに基づいています。アクティブな有効期限メカニズムが実行されているときに、Redisコマンドを処理することはできません。
クライアントアプリケーションのパフォーマンスへの影響を避けるため、アクティブなメカニズムが起動されるたびに(デフォルトでは10個のキー)、限られた数のキーのみが処理されます。ただし、25%を超えるキーが期限切れになった場合は、より多くのキーとループを期限切れにします。これは、この確率的アルゴリズムがRedisが期限切れにしている鍵の数に自動的にその活動を適応させる方法です。
多くのキーが期限切れになると、この適応アルゴリズムはRedisのパフォーマンスに大きな影響を与える可能性があります。詳細はhereをご覧ください。
私の提案は、Python-rqが有効期限を設定してアイテムのクリーニングをRedisに委任するのを防ぐことです。これは、とにかくキューイングシステムにとっては貧弱な設計です。
あなたの使用状況はどのように見えますか?大きな「並べ替え」が行われていますか?プロダクションコードで 'KEYS'を使用していますか?あなたはどこからでも 'MONITOR'を走っていますか?永続化戦略とは何ですか? –
このインスタンスで永続性を無効にしました。現在、どこでも 'KEYS'や' MONITOR'コマンドを使用していません。少なくとも自分の知識の範囲では、私たちには「並べ替え」はありません。このインスタンスは 'rq'専用です(www.python-rq.org)。 –