このマニュアルには、性能面での問題が発生する理由を見つけるための方法と、それらの問題を解決するための方法について説明しています。お使いのシステムを実際にチューニングする前に、まずはよくある問題を排除してから問題を洗い出すことをお勧めします。またシステムのチューニングにあたっては、手当たり次第に部分的なチューニングを行ってしまうと、解決に至らないばかりか、状況を悪化させることもあることから、綿密な計画をもって望むようにしてください。
解決すべき問題をはっきりさせます。
性能劣化が最近発生したものである場合は、まずシステムに対する直近の変更点を確認します。
その問題が性能に影響する理由を特定します。
性能を分析するために使用する尺度を決定します。尺度にはたとえば、遅延時間やスループット、ユーザの最大同時ログイン数や活動中の最大ユーザ数などがあります。
決定した尺度を利用して、現時点での性能を計測します。
アプリケーションが最も時間を消費しているサブシステムを特定します。
システムやアプリケーションを監視します。
データを分析して、分類ごとの時間消費をまとめていきます。
特定されたサブシステムをチューニングします。
監視をいったん停止し、以前と同じ尺度で改善後の性能を計測します。
性能がまだ不十分であるとお考えの場合は、 ステップ 3 からやり直します。
システムのチューニングを始める前に、まずは問題点をできるだけ正確に定義してください。単純に 「システムが遅い」 と言うだけでは、問題の定義とは言えません。たとえばシステムの速度を全体的に改善する必要があるのか、それともピーク時間帯にのみ改善する必要があるのかによっても、改善の方向性が変わってきます。
それに加えて、問題点を定量的に測定する環境も必要となります。測定環境が存在しないと、チューニングが成功したのかどうかがわからなくなってしまうためです。常に 「前」 と 「後」 を比較するようにしてください。どのような尺度を使用するのかは、環境や用途、目的などによって異なります。たとえば Web サーバの尺度という観点では、下記のような尺度が存在します:
ページを配信するのにかかる時間
毎秒提供ページ数、もしくは毎秒転送量 (速度)
許容可能な遅延時間内でページを配信することのできる、最大のユーザ数
よくある性能問題の原因としては、ネットワークやハードウエアの問題のほか、バグや設定の問題によるものがあります。お使いのシステムのチューニングを実施する場合は、まずは下記の作業を実施して、よくある問題を排除してください:
systemd
のジャーナルの出力 (詳しくは 第11章 「journalctl
: systemd
ジャーナルへの問い合わせコマンド」 を参照) を確認し、通常とは異なる出力が出ていないかどうかを確認してください。
top
や ps
などのコマンドを使用して、不必要に CPU 時間を浪費していたり、メモリを占有していたりするプロセスがないかどうかを確認してください。
/proc/net/dev
を調査して、ネットワーク側に原因がないかどうかを確認してください。
ハードウエア側の問題 (ディスクの場合は smartmontools
などで確認することができます) 、もしくはディスク容量の不足によって、物理ディスクの I/O 障害が発生していないかどうかを確認してください。
サーバの負荷が低い時間帯に、裏で動作するジョブを実行していることを確認してください。また、これらのジョブは優先度を落として (nice
コマンドで設定することができます) 実行すべきものでもあります。
同一のリソースを共有して複数のサービスを動作させている場合は、サービスを他のサーバに移設できないかどうかを検討してください。
最後に、お使いのソフトウエアが最新の状態になっていることを確認してください。
システムをチューニングするにあたって、もっとも難しいのがボトルネックの発見です。 openSUSE Leap では、様々なツールを提供することで、この解決を支援しています。一般的なシステム監視アプリケーションやログファイル分析ツールについては、 パートII「システム監視」 に詳細な説明があります。また、問題が長期にわたる深い分析を必要とするようなものである場合は、 Linux カーネル側で提供する機能を使用することをお勧めします。詳しくは パートIII「カーネル監視」 をお読みください。
データを収集した場合は、それらを分析する必要があります。まずはサーバのハードウエア (メモリ, CPU, バス) を調査して、 I/O 性能 (ディスク, ネットワーク) が十分に発揮されていることを確認してください。これらの基本要件を満たしていれば、システムをチューニングする段階へと移行してください。
チューニングは注意深く計画してください。一度に複数のチューニングを実施したりせず、 1 つだけチューニングを施すのがきわめて重要です。これにより、チューニングが改善をもたらしたのか、それとも悪化させてしまったのかを正確に判断できるためです。また、それぞれのチューニング作業後は十分な時間を確保して測定を行い、次の段階に移行するための足がかりを確立してください。もしもチューニングによって性能を改善できている確証が得られない場合は、その変更を恒久的に保存したりはしないでください。チューニングの内容によっては、しばらく時間をおいてから悪化するようなものもあります。