#環境
Java
SpringBoot
AWS
(Route53により、お名前.comで取得したドメイン名を設定)
(ACMを用いてhttps化しています)
(EC2のOSはAmazon Linux使用)
Tomcat9 (EC2内)
Apache httpd 2.4.48(EC2内)
#困っている状況・解決したいこと
AWSにJavaで作成したアプリケーションをデプロイしたのですが、URLから表示する際の応答時間に波があります。
表示まで1分程度かかることがありますが、一度表示してすぐ後に試すと表示速度は早い状態が続きます。
しかし一定時間経過するとまた表示速度が遅くなります。
実際のURL:https://task-time.net
当状況の原因特定の方法とその解決策について、何かご教示いただけますと幸甚です。
#ネットワーク構成図
( 初学者のため誤っている箇所がありましたら申し訳ございません )
(追記 Route53にElasticIPを設定しているような図となっていたので図を修正しました。申し訳ありませんでした。
Route53は以下の通り設定しております。
レコードA:ALBを設定
レコードNS, SOA, CNAME:お名前.comの設定
レコードTXT:GoogleAPIの検証用の設定)
#試したこと
- CloudWathにてALBのResponse Time確認(以下の通りで問題ありませんでした)
- EC2インスタンスのシステムログを確認
「Out of memory: kill process」(メモリ不足: プロセスを強制終了)などのエラーがないか確認
→問題ありませんでした。
- Apache単体で表示テスト
ApacheからTomcatへの転送を行わずApacheのテストページを表示してみる
→変わらず表示が遅いことがあるため、Apacheにアクセスするまでに問題があると想定しております。
####(2021/11/3追記)
- GoogleChromeの検証画面確認
以下の通りで、初期接続時に1.3分かかっていることが分かりました。
- Apacheのログ確認
/etc/httpd/logs/内のerror_logを確認したところ、気になる箇所として以下のようなログがありました。
[Wed Oct 27 13:00:14.032817 2021] [proxy_http:error] [pid 23434] (20014)Internal error (specific information not available): [client 10.0.0.17:2796] AH01102: error reading status line from remote server localhost:8009 [Wed Oct 27 13:00:14.032845 2021] [proxy:error] [pid 23434] [client 10.0.0.17:2796] AH00898: Error reading from remote server returned by /
Qiitaの記事によると、
「リバースプロキシ(Apache)とバックエンドの間でコネクションを再利用した際にリバースプロキシからリクエストを送信するタイミングとバックエンド側がコネクションをクローズしたタイミングが一致した時に発生」
するもののようです。
/etc/httpd/conf.d/proxy-ajp.conf内に以下の記述を追加すると上記エラーは解消されましたが、
SetEnv proxy-initial-not-pooled 1
接続速度の問題は解決していません。
error_logの全文は以下のとおりです。
[Sun Oct 31 03:44:01.344488 2021] [lbmethod_heartbeat:notice] [pid 14065] AH02282: No slotmem from mod_heartmonitor [Sun Oct 31 03:44:01.344539 2021] [http2:warn] [pid 14065] AH10034: The mpm module (prefork.c) is not supported by mod_http2. The mpm determines how things are processed in your server. HTTP/2 has more demands in this regard and the currently selected mpm will just not do. This is an advisory warning. Your server will continue to work, but the HTTP/2 protocol will be inactive. [Sun Oct 31 03:44:01.344941 2021] [mpm_prefork:notice] [pid 14065] AH00163: Apache/2.4.48 () OpenSSL/1.0.2k-fips configured -- resuming normal operations [Sun Oct 31 03:44:01.344949 2021] [core:notice] [pid 14065] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND' [Wed Nov 03 16:26:59.151418 2021] [proxy:error] [pid 20083] (111)Connection refused: AH00957: AJP: attempt to connect to 127.0.0.1:8009 (localhost) failed [Wed Nov 03 16:26:59.152888 2021] [proxy_ajp:error] [pid 20083] [client 10.0.1.252:21230] AH00896: failed to make connection to backend: localhost [Wed Nov 03 16:27:05.494995 2021] [mpm_prefork:notice] [pid 14065] AH00170: caught SIGWINCH, shutting down gracefully [Wed Nov 03 16:27:06.720868 2021] [suexec:notice] [pid 4638] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) [Wed Nov 03 16:27:06.743505 2021] [so:warn] [pid 4638] AH01574: module proxy_module is already loaded, skipping [Wed Nov 03 16:27:06.798965 2021] [lbmethod_heartbeat:notice] [pid 4638] AH02282: No slotmem from mod_heartmonitor [Wed Nov 03 16:27:06.799031 2021] [http2:warn] [pid 4638] AH10034: The mpm module (prefork.c) is not supported by mod_http2. The mpm determines how things are processed in your server. HTTP/2 has more demands in this regard and the currently selected mpm will just not do. This is an advisory warning. Your server will continue to work, but the HTTP/2 protocol will be inactive. [Wed Nov 03 16:27:06.804169 2021] [mpm_prefork:notice] [pid 4638] AH00163: Apache/2.4.51 () OpenSSL/1.0.2k-fips configured -- resuming normal operations [Wed Nov 03 16:27:06.804196 2021] [core:notice] [pid 4638] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
- アプリケーションのログ確認
SpringBoot内のapplication.ymlにログファイル出力の設定を行い確認しましたが、接続が遅いときでも特にログ上で異常はありませんでした。
- tracetouteコマンドによる確認
これから行ってまいります。
回答2件
あなたの回答
tips
プレビュー