Redisの使用量が急増し、どのような大きなkeyがおかしいのかを迅速に特定します.
1888 ワード
redisの使用量が急激に増加したことが判明し,緊急にredisを拡張し,サービスの稼働に影響を及ぼすことができなかった.拡張後、急いで原因を探して、突破口はどんな大きなkeyがあるかを探すことです.
1.redisのdump.rdbファイルはローカルにダウンロードされます(一般的にredisの永続化ファイルはrdbで格納され、redisプロファイルではdump.rdbの格納パスが見つかります).
2.rdbtoolsツールでメモリレポートを作成します.コマンドはrdb-c memoryです.例:
注意:rdbファイルが大きいほど、生成時間が長くなります.
Rdbtoolsはpython言語で開発された.
GITHUPアドレス:https://github.com/sripathikrishnan/redis-rdb-tools/
3.メモリレポート生成後、linux sortコマンドでソートし、メモリ列に基づいてソートし、最も高いkeyがどれらがあるかを見つけます.例:
4.上位1000ソートで最も高いデータを表示
5.sortを表示します.txtの結果は、一般的に「my_rank_トップの先頭の集合占有率が最も高く,上位にランクされている.似たような「my_を表示するにはrank_top’の先頭のkeyは全部でどれだけのメモリを占有して、コマンドを使うことができます:
6.my_を知ったrank_トップのようなkeyは最大のメモリを消費し、ビジネスが不要になった可能性が高いが、長期にわたってメモリの中でクリーンアップされていないので、これらのセットを削除することができます.ファジイマッチングkeyで削除できます.コマンドは次のとおりです.
添付:redisロードdumpをローカルで起動します.rdbファイルの時、ずっとloadに失敗しました.長い間やって、やっと原因を見つけました:redisプロファイルのdatabasesは256に変更して、ローカルのデフォルトは16で、原始dumpを生成します.rdbのredisのdatabasesは25です.
参考資料:
1. FAQ:https://github.com/sripathikrishnan/redis-rdb-tools/wiki/FAQs2.redis dumpファイル仕様:https://github.com/sripathikrishnan/redis-rdb-tools/wiki/Redis-RDB-Dump-File-Format3.redis RDB履歴バージョン:https://github.com/sripathikrishnan/redis-rdb-tools/blob/master/docs/RDB_Version_History.textile 4. redis-rdb-tools:https://github.com/sripathikrishnan/redis-rdb-tools 5.https://blog.csdn.net/jiangsanfeng1111/article/details/53523581
1.redisのdump.rdbファイルはローカルにダウンロードされます(一般的にredisの永続化ファイルはrdbで格納され、redisプロファイルではdump.rdbの格納パスが見つかります).
2.rdbtoolsツールでメモリレポートを作成します.コマンドはrdb-c memoryです.例:
sudo rdb -c memory /redisfile/dump.rdb >test.csv
注意:rdbファイルが大きいほど、生成時間が長くなります.
Rdbtoolsはpython言語で開発された.
GITHUPアドレス:https://github.com/sripathikrishnan/redis-rdb-tools/
3.メモリレポート生成後、linux sortコマンドでソートし、メモリ列に基づいてソートし、最も高いkeyがどれらがあるかを見つけます.例:
sudo sort -k4nr -t , test.csv > sort.txt
4.上位1000ソートで最も高いデータを表示
awk -F ',' '{print substr($3, 0,18)}' sort.txt | head -1000 | sort -k1 | uniq
5.sortを表示します.txtの結果は、一般的に「my_rank_トップの先頭の集合占有率が最も高く,上位にランクされている.似たような「my_を表示するにはrank_top’の先頭のkeyは全部でどれだけのメモリを占有して、コマンドを使うことができます:
sudo cat sort.txt | grep ‘my_rank_top’ | awk -F ',' '{sum += $4};END {print sum}'
6.my_を知ったrank_トップのようなkeyは最大のメモリを消費し、ビジネスが不要になった可能性が高いが、長期にわたってメモリの中でクリーンアップされていないので、これらのセットを削除することができます.ファジイマッチングkeyで削除できます.コマンドは次のとおりです.
redis-cli -h 127.0.0.1 -p 6379 keys 'my_ranking_list*' | xargs redis-cli -h 127.0.0.1 -p 6379 del
添付:redisロードdumpをローカルで起動します.rdbファイルの時、ずっとloadに失敗しました.長い間やって、やっと原因を見つけました:redisプロファイルのdatabasesは256に変更して、ローカルのデフォルトは16で、原始dumpを生成します.rdbのredisのdatabasesは25です.
参考資料:
1. FAQ:https://github.com/sripathikrishnan/redis-rdb-tools/wiki/FAQs2.redis dumpファイル仕様:https://github.com/sripathikrishnan/redis-rdb-tools/wiki/Redis-RDB-Dump-File-Format3.redis RDB履歴バージョン:https://github.com/sripathikrishnan/redis-rdb-tools/blob/master/docs/RDB_Version_History.textile 4. redis-rdb-tools:https://github.com/sripathikrishnan/redis-rdb-tools 5.https://blog.csdn.net/jiangsanfeng1111/article/details/53523581