BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【Apache】キャッシュの落とし穴

はじめに


はじめまして!

株式会社BFT名古屋支店・新卒のゆいちゃとげんぬです。

BFTに新卒として入社し、エンジニアになって4カ月目のひよっこです!

入社当初は、ショートカットキーってなんぞや?OS?Windows以外にもあるの!?といった感じで、システムにあまり触れてこなかった私たちですが、3ヵ月間、東京本社で研修を受けた結果、仮想マシンを作成、OSの設定やミドルウェアのインストール、Web3層構成の構築ができるまでに成長しました!

そんな私たちが今回、本社での研修期間が明けて、支店に戻り自学自習のためにAWSでのWeb3層構造を作成していた際によく発生したエラーの原因となっていたキャッシュについてはてぶろでアウトプットしていきたいと思います!

至らない点も多いと思いますが、暖かい目でご覧いただけると幸いです。

今回作成したWeb3層構造の設定は以下の通りです。

仮想マシン:EC2×2,RDS

OS:Amazon Linux 2

ミドルウェア:Web(Apache2.4.5)AP(Tomcat10.0.0)DB(MariaDB10.6.7)

発生したエラーについて


Web3層構造を作成する際、WebサーバとAPサーバをプロキシーパスを通して連携する作業をしていました。 しかし、WebサーバのIPアドレスをHTTP通信でブラウザに入力し、連携しているか確認してみたところ

あれ?503のエラーメッセージが、、、

エラーを解消するため、調査してみたところ、どうやらキャッシュに問題があるみたいです。

キャッシュってなに?


通信速度を速めるために、一度読み込んだ情報を貯めておく仕組みのことです。

今回のエラーとキャッシュの関係性


Web3層構造を作成する際、WebサーバとAPサーバをプロキシーパスを通して連携する作業をしていました。

その際、Webサーバ内にあるApacheの設定ファイル(httpd.conf)内で設定したプロキシーパスをミスしたまま一度 通信してしまったために、Webサーバのキャッシュが間違ったプロキシーパスを覚えてしまいました。

結果として、正しくプロキシーパスを設定し直してもWebサーバ(Apache)とAPサーバ(Tomcat)が連携しなくなってしまいました。

対処方法


①以下のコマンドでキャッシュの状態を確認してみます。

 free -m  

buff/cache の部分が235あり、キャッシュが溜まっていることがわかります。

② キャッシュを以下のコマンドで消してみましょう!

 sh -c "echo 1 > /proc/sys/vm/drop_caches"

③キャッシュが消えたか一度確認してみましょう。

 free -m

buff/cache の部分が235から102と数値が変わっており、キャッシュが消えていることが確認できます!

終わりに


キャッシュが消えて、webサーバとAPサーバが連携することができました!

キャッシュって便利な機能ですけど、こんなこともあるんですなぁ、、、。 勉強になりました!