目次

システムパフォーマンス入門



システムパフォーマンスとは

なぜパフォーマンスに詳しくなる必要があるのか?

パフォーマンス用語

パフォーマンス(性能)
モニタリング(監視)
キャパシティープランニング 予算や信頼性や利用者などから、機器台数や構成などの計画を立てること。


パフォーマンスの基礎知識

ハードウェアの知識


Linuxのパフォーマンス

Linuxのパフォーマンス確認

問題発生時の原因特定のためには、秒間隔で調査するために、コマンドを知っておく必要があります。
監視ツールだと1分間隔や5分間隔でしか確認できないです。

全体的にパフォーマンスを確認

各項目のパフォーマンスを確認する

メモ


Linuxのパフォーマンス設定

Linuxサーバの性能は、OSで設定できるのは、カーネルパラメータくらいです。
最近は、ハードウェアの性能も上がり、カーネルパラメータもよほどの高負荷でなければ、デフォルトで大丈夫ですし、
全サーバ共通の決まった設定をしておけば大丈夫です。

Linuxサーバの性能は、ハードウェアによって、決まってしまいます。
つまり、選定が重要です。ハードウェアに詳しくなりましょう。


Linuxのパフォーマンステスト

複合
ディスク
CPU
ネットワーク


Windowsのパフォーマンス

Windowsのパフォーマンス確認

Windowsのパフォーマンス設定

Windowsのパフォーマンステスト


ミドルウェアのパフォーマンス

Webサーバのパフォーマンス

確認
設定
テスト


メールのパフォーマンス

確認
テスト


Javaのパフォーマンス


ネットワーク機器のパフォーマンス

監視項目
トラフィック ・スケールアウトできない機器間のトラフィックは、一つの目安として60%以内を保つ。
・1分間隔で監視しても、時間の平均なので、瞬間的に高いことがある
パケットディスカード ・基本は「0」。
・ディスカードがあったら、対策を実施
レイテンシー ・機器間の往復の時間。
・コマンドだと、pingやtracerouteで確認可能


ストレージのパフォーマンス

ストレージは、各ベンダーの監視ツールが充実しているので、それを利用するでいいと思います。

監視項目
ディスク使用率
IOPS


パフォーマンス監視

パフォーマンス監視の考え方

何のために監視するのか?
何分間隔で監視をするか?

5分ですか? 僕は、最低でも1分間隔で行いたいと考えています。
さらに問題発生時に調査をしやすいように、秒間隔でも取得しておく必要があります。

複数の監視ツールがある状況

1つの監視ツールで全てが正しく、監視できればいいですが、
なかなかうまくできないものです。
また、有料の監視ツールで全てをやろうとするとコストが高くなってしまうので、開発環境は別のツールということもあります。
僕は、ツールの特性にあうように複数の監視ツールを使うようにしています。


監視ツール

自作監視ツール

一般的な監視ツールでは対応できない場合は、自作します。
例えば、秒間隔で監視したいとか、プロセス状況を監視したい場合には自作する必要があります。

オンプレ、IaaSの監視ツール

Zabbix 定番
https://www.zabbix.com/jp
「Grafana」で、高機能なグラフ化が可能
Prometheus
プロメテウス
https://prometheus.io/
「Alertmanager」でアラート通知
「Grafana」で、Prometheusが保存した時系列データをグラフ化
「Thanos」で、データを長期保存(オブジェククトストレージ)
Icinga2
アイシンガ
https://icinga.com/
Nagiosから派生したオープンソース
WEBインタフェースからだけでなく、コマンドラインでも監視の設定が可能
「Grafana」で、高機能なグラフ化が可能
Munin ・Perl で書かれたリソース監視ツール
・RRDtool でグラフを作成している
・各監視対象のサーバーにmunin-nodeをインストールする
Ganglia http://ganglia.info/
2016年で開発が停止している
Cacti
カクタイ
https://www.cacti.net/
・RRDtool でグラフを作成している
・グラフ見やすい
・基本はSNMPだけなので、取得できない項目もある。
・SNMPで取得できない項目の対応を自分でするのは大変
・SNMPのため、大規模だとうまく取れない時がある。
Netfilx Vector サーバメトリクス収集ツールのPerformance Co-Pilotのデータ可視化ツール
今現在の詳細状況がわかります。
http://getvector.io/
https://github.com/Netflix/vector
STOR2RRD 有名なストレージのパフォーマンスをグラフ化
https://stor2rrd.com/
GrowthForecast WebAPI経由で受け取ったデータを元にグラフ化をしてくれるツール
http://kazeburo.github.io/GrowthForecast/
2014年で開発が停止している

可視化(グラフ)のない監視

Sensu ・「Nagios」の問題点を解決する目的で、開発が開始されました。
・「Nagios Plugins」と互換性
・監視サーバやミドルウェアをスケールアウトできる
・標準でRESTful API
・可視化する機能を備えていない
【注意事項】
・RabbitMQとRedisを構築、運用する必要がある
Nagios ・監視時間を細かく設定しやすいので、プロセス監視にオススメ。

SaaSの監視ツール

Datadog
New Relic
Macarel 日本のはてな社製監視ツール


ログ監視ツール

Graylog
Logstash
Logcheck
Logwatch