アプリケーション障害に見える内容、原因はインフラ設定にアリ!?

~アプリケーション障害に見える内容、原因はインフラ設定だった~

◇はじめに

私は現在、コンテンツサイトの運用保守を担当しています。
運用保守とは、サイトが毎日問題なく動き続けるよう、点検や更新作業、トラブル対応を行う仕事です。

Webサイトは大きく、検索などの機能を作る「アプリケーション」と、それを動かす土台である「インフラ」(サーバやOS、PHPなどのソフトウェア)でできています。今回は、一見アプリの不具合に見えたのに、実は土台側の設定が原因だった事例を紹介します。

◇この記事で分かること

☆PHPの「セッション」の仕組み
☆Linuxのファイル権限(パーミッション)の基本
☆原因を絞り込む「切り分け」の考え方

※本記事では、LinuxやPHPの詳細な内部仕様ではなく、
実際の発生事例をもとに、初心者向けに基本的な仕組みを解説します!

◇今回の事例

定例作業であるサーバ、ミドルウェアのメンテナンスを実施し、
無事完了!と思ったときのことでした。

メンテナンス後の最終チェックでサイトのコンテンツ検索機能が正常かチェックをしました。

このように検索実施後、ヒット件数とコンテンツのサムネイルが表示されます!(画像はイメージ)

検索結果が多く、複数ページに跨る場合2ページ目以降にもサムネイルが表示されるはずですが…

2ページ目以降をクリックすると0件になりました…。
そのほかのサイト表示も問題なし、表示されたコンテンツも利用できるのに…

 ■考えられる原因

複数の原因を想定しました。

※1 DB…検索対象のデータを保管しているデータベース

※2 CDN…サイトの画像やデータなどを利用者の近くのサーバから配信する仕組み

※3 キャッシュ…一度表示した内容を一時保存して、次回からすぐ取り出せる仕組み

メンテナンスを実施した後なのもあり、サーバ設定変更(次点でアプリケーション不具合)が怪しい…と見当し原因調査へ。

◇原因調査

調査の1つとしてログでメンテナンス前後の差分を確認。
今回のメンテナンスではPHPバージョンアップを行っていました。

調査を進める中で、
/var/lib/php/session
ディレクトリの権限が変更されていることが判明しました。

PHPではセッション情報(※4)をファイルとして保存することがあります。
例えば検索機能では、以下の処理を行います。

※4 セッション… サイトが利用者ごとの情報を一時的に覚えておく仕組み

初回検索ではセッションを利用しなくても表示できます。

しかし2ページ目以降を表示するため、セッションファイルに保存されている前回の検索ワードを取得する際、
PHPバージョンアップ時にセッション保存領域の権限が運用時設定から変更されその権限が700になっていたため、PHP実行ユーザーがセッションファイルに保存されている検索条件に正常にアクセスできず、ページング処理が失敗していました。

  結果、検索実施時に
「1ページ目は表示できるが、2ページ目以降は0件になる」
という現象が発生していました!

 ■実施対応

権限を正常時(770)の設定へ戻し、
検索機能を確認したところ、2ページ目以降も正常に表示されることを確認!

 ◇まとめ

今回、検索機能の不具合の実際の原因はPHPセッション保存領域の権限変更でした。

事例を通して、Linuxのファイル権限は、Webアプリケーションの動作にも直接影響があることを学ぶことができました。

一見アプリケーションの障害に見える事象でも、原因はインフラ設定にある場合があります。
特にミドルウェアのバージョンアップ後は、設定値や権限が意図せず変更されていないかを確認することが重要です!

◇さいごに

今回のように、原因を切り分けながら調査し、サービスの安定運用を支えることも運用保守エンジニアの大切な役割です。

当社では、実際のシステム運用を通じて幅広い技術を学びながら成長できる環境があります。インフラやクラウド、ミドルウェアの知識を身につけ、エンジニアとしてステップアップしたい方は、ぜひ一緒に働いてみませんか。

  • URLをコピーしました!
目次