ホームページ  >  に質問  >  本文

服务器IO问题(疑似Redis导致的)

某生产环境服务器(多个服务都安装在1台服务器上)

服务器负载一致居高不下,升级过硬件以后有好转,CPU和内存的有所缓解,不过磁盘IO的依然如故;

使用nmon查看由多块磁盘组成一个LVM分区,写一直是100%;

使用lsof查看,该分区的主要读写的是MySQL和Redis;

使用iotop查看io排行,前几个分别是:

[jbd2/dm-0-8]
[flush-253:0]
[redis]
[mysql]

对前2个进程不太了解,有没有那位比较熟悉的大神指点下,前2个进程的用途以及他们和Redis的IO优化建议;

PHP中文网PHP中文网2736日前734

全員に返信(2)返信します

  • 高洛峰

    高洛峰2017-04-24 09:15:53

    この問題をトラブルシューティングするには、次の 3 つの側面を考慮してください。
    1. アプリケーション層

    • アプリケーションのパフォーマンスの問題があるかどうかを確認するための redis ステータス監視

    • mysql ステータス監視、スロークエリログおよびその他の関連する問題点を表示

    2. システム層
    flush-253:0 および jbd2/dm-0-8 これらはすべて、実際にディスクとファイル システムを処理するオペレーティング システムのプロセスです。アプリケーション層によって生成されます。

    3. ハードウェア
    ディスクのステータス、サーバーのハードウェアの問題を確認します

    返事
    0
  • 黄舟

    黄舟2017-04-24 09:15:53

    保存の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 プロセスで大量のデータを保存しないことです

    返事
    0
  • キャンセル返事