naoyaのはてなダイアリー - マルチコア時代のロードアベレージの見方
を読んで思い出したこと.
前職ではいろんなサービスがいろんな方式でサービスを行ってた.
Javaあり,FreeBSDあり,Solarisあり,Threadバリバリ,プロセス立ち上げまくり,○○のサーバ,メモリ沢山載ったサーバ,古いサーバ,改造××などなど.
そんなサーバ群はロードアベレージ20とかでも平気でサービスを行ってる一方で,ロードアベレージ1くらいでも苦しそうな(?)サーバとかもあって,ロードアベレージという数字はあまり役に立ってなかった.そんな中で我々のチームが下した結論は
「ロードアベレージは何かの数字を表しているかも知れないけれど,
*絶対的な数字*として使うにはきっと役に立たない」
というものだった.
監視などをするにあたって,ロードアベレージ,IOStat,使用帯域,メモリ使用量などの各種パラメータをいろんな状況/プラットフォーム/新旧サーバで動いているサーバ群に対して適切にアラートを出すのはがんばればできるのかもしれないけれど,システムはどんどん成長していくモノなので,「一方ロシアは...」作戦で平均レスポンスタイムを絶対的な評価基準として採用し,これを割り込んだらアラートメールなり何らかのアクションを取るようにしていた.
レスポンスタイムとはなにかのリクエストを投げて帰ってくるまでの時間のことで,ロードアベレージやIOSatatとかの値がすごい値でもサービスが滞りなくできているうちは「だからなんだ?問題なし」というわけだ.
ではロードアベレージなどの数字は役に立たないのか?というとそうではなく,上記レスポンスタイムを割ったときなどの原因の調査などに役に立つ.ロードアベレージなどの値はグラフ化することができるので1つのサーバ内での傾向をつかむのには役に立つ(つまり同一条件での比較が出来てるということになる).
あとスワップがおきたり変なプロセスがいきなりログとか大量に吐き出して大変になったりするので,メモリやディスクの余り量の絶対値と使用率もあわせて押さえておきたい.
元記事では
ロードアベレージは1未満に保っておければべスト、みたいなことが経験則として良く言われます
という風に「ロードアベレージが1」というのになにかしらシンボリックな意味合いが世の中的にはあるような印象を受けた.
ただ「ロードアベレージがNである」だから「負荷が高い」は正しいかも知れないけれど,そこから「だからやばいんです!」というのは必ずしも正しくない気がするので,気をつけていきたい.
(おしまい)