Linux Essentials for Web Developers
第10話:トラブルシューティングとパフォーマンスチューニング
(最終更新日:2024.01.10)
(絵が小さい場合はスマホを横に)
「いつも快適なWeb環境を!」
サーバー管理やWebサイトを運営するうえで、ログやパフォーマンスを監視することは非常に重要だ。
他のコンピューターから攻撃を受けたりした場合は、ログを見ることで、
どこから攻撃を受けているか、どこが攻撃を受けているか のヒントを知ることができる。
また、何年も使っていて処理速度が落ちていたり、急なアクセス数増加で応答が悪くなっていたりした場合、
パフォーマンスを監視することで、すぐに気が付くことができる。
今回は、ログやパフォーマンス監視を通じて、トラブルシューティングする方法について紹介する。
[目次]
1.システムログの分析
トラブルシューティングとパフォーマンスチューニングの一環として、システムログの分析は非常に重要だ。 Linuxシステムでは、さまざまなログファイルが生成され、システムの動作や問題点に関する貴重な情報を提供する。 システムログの場所は以下の通りとなる。
- ■システムログの主要な場所
- /var/log/syslog:UbuntuやDebian系のディストリビューションでの主要なシステムログファイル
- /var/log/messages:Red Hat、CentOS、Fedoraなどのディストリビューションでの一般的なシステムログファイル
- /var/log/auth.log: 認証に関するログ(ログイン試行など)
- /var/log/dmesg:カーネルによって生成されたメッセージ
- /var/log/apache2/ or /var/log/httpd/: Apache Webサーバーのログ
- /var/log/mysql/:MySQLデータベースのログ
GUIツールなどを用いない場合、ログを分析する方法しては、特定のキーワードやエラーメッセージを探すということが挙げられる。
grepコマンドを使用して、特定のエラーメッセージやキーワードを探すことができる(grep "error" /var/log/syslog)。
ログファイルの監視をする場合は、tail コマンドの -f オプションを使用する(tail -f /var/log/apache2/error.log)。
これにより、新しいエラーメッセージが追加されると、ターミナルに表示されるようになる。
これを終了させるには、Ctrl+Cを押す必要がある。
他にも、エラーが起こったと思われる時間を目安に手がかりを調べることがある。
注意点としては、ログファイルは何年もとっていると非常に大きなファイルになる可能性がある。
適切なタイミングで、他ストレージへのバックアップと、サーバー上からの削除を行う必要がある。
加えて、個人情報を含む場合もあるので、プライバシーとセキュリティに関して注意することが大事だ。
ログは自動的に記録される
2.パフォーマンス監視と最適化
パフォーマンスチューニングにおけるパフォーマンス監視と最適化は、システムの効率性と信頼性を高めるために重要だ。 ここでは、実際にどのようにパフォーマンス監視を行い、最適化するかを具体的に説明する。 典型的な例としては、以下の順番に沿って、チューニングを行う。
- ■パフォーマンスチューニング
- リソース使用状況の監視:top、htop、vmstat、iostat などのツールを使用してCPU、メモリ、ディスクI/Oの使用状況を監視する
- ボトルネックの特定:システムの遅延やパフォーマンス低下の原因となるボトルネック(CPU使用率の高さ、メモリ不足、ディスクI/Oの遅延など)を特定する
- 設定の最適化:プリケーションやサービスの設定を調整し、リソースの使用を最適化する。例えば、Webサーバーやデータベースサーバーの設定を調整してパフォーマンスを向上する
パフォーマンス監視ツールとしては、代表的なものに以下のようなものがある。
- ■パフォーマンス監視ツール
- top:リアルタイムでシステムのプロセスとリソース使用状況(CPU、メモリなど)を表示する
- vmstat:メモリ、スワッピング、I/O、CPUアクティビティなどの統計を表示する
- iostat:プリケーションやサービスの設定を調整し、リソースの使用を最適化する。例えば、Webサーバーやデータベースサーバーの設定を調整してパフォーマンスを向上する
- free:メモリ使用量(使用中、フリー、スワップなど)を表示する
- sar:システムアクティビティを時間別に収集し、過去のデータを分析する
このように得られた情報を元に、高CPU使用率のプロセスを特定し、不要なサービスを止めたり、
メモリリークしてそうなアプリケーションを特定したり、
ディスクI/Oのボトルネックを特定し、キャッシュ設定やファイルシステムのパラメータを調整したり、
ネットワークの帯域幅や遅延を監視し、最適化を行ったり、
アプリケーション固有のパフォーマンス調整を行ったりする。
パフォーマンスの問題は徐々に発生することが多いため、定期的に監視することが重要である。
パフォーマンスの問題に対する対策と計画を文書化し、将来的な問題に迅速に対応できるようにすることも大事だ。
加えて、ソフトウェアとカーネルのアップデートを定期的に行い、最新のパフォーマンス改善とセキュリティパッチを適用することも行っておこう。
パフォーマンス監視と最適化を習慣化することで、安全で快適なサーバー環境を保つことができる。
パフォーマンスを監視し、快適な環境を維持
3.まとめ
今回はシステムログの分析とパフォーマンスチューニングについて紹介した。 日々の監視により、異変に早く気が付くということが、トラブルを最小限に抑えるために重要だ。 今回紹介した方法以外にも、GUIツールを使った方法など、やり方は色々ある。 自分たちに合った方法でログや数値を監視し、常に快適なサーバー環境を保とう。
▼参考図書、サイト
「スーパーユーザーなら知っておくべきLinuxシステムの仕組み」 インプレス Brian Ward, 柴田 芳樹
「Linux再入門―カーネル、シェル、ファイルといった基本概念を理解してトラブルシューティング力を高めよう」 Udemy しま