某生产环境服务器(多个服务都安装在1台服务器上)
服务器负载一致居高不下,升级过硬件以后有好转,CPU和内存的有所缓解,不过磁盘IO的依然如故;
使用nmon查看由多块磁盘组成一个LVM分区,写一直是100%;
使用lsof查看,该分区的主要读写的是MySQL和Redis;
使用iotop查看io排行,前几个分别是:
[jbd2/dm-0-8]
[flush-253:0]
[redis]
[mysql]
对前2个进程不太了解,有没有那位比较熟悉的大神指点下,前2个进程的用途以及他们和Redis的IO优化建议;
この問題をトラブルシューティングするには、次の 3 つの側面を考慮してください。
1. アプリケーション層
アプリケーションのパフォーマンスの問題があるかどうかを確認するための redis ステータス監視
mysql ステータス監視、スロークエリログおよびその他の関連する問題点を表示
2. システム層
flush-253:0 および jbd2/dm-0-8 これらはすべて、実際にディスクとファイル システムを処理するオペレーティング システムのプロセスです。アプリケーション層によって生成されます。
3. ハードウェア
ディスクのステータス、サーバーのハードウェアの問題を確認します
保存のrdbモードに関連する高いredis ioの問題が発生しました
redisのデフォルト設定
save 900 1
save 300 10
save 60 10000
上記は、サービスが少なくとも1回実行されたことを意味します。
900 秒以内 変更、またはサーバーが 300 秒以内に少なくとも 10 回変更された、またはサーバーが 60 秒以内に少なくとも 10,000 回変更された場合、保存がトリガーされます。rdb メソッドは、メインプロセスを子プロセスにフォークします。プロセスをフォークしてから、プロセスのすべてのデータがディスクに保存されることに注意してください。たとえば、10G のメモリを占有している場合、最大 900 秒ごとに保存されます。 10G メモリ内のすべてのデータはディスクに保存されます。デバイスの IO 能力が比較的低い場合、または Redis データ量が大きい場合、保存操作は保存サイクル内に完了しません。保存が続行され、IO が高くなります。
解決策は、
1 Redis の保存サイクルを延長する
1 つの Redis プロセスで大量のデータを保存しないことです
。