質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.39%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

2回答

5632閲覧

AWSにデプロイしたアプリの応答時間が長すぎるので解決したい

KNakamura

総合スコア1

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

2クリップ

投稿2021/10/14 09:08

編集2021/11/03 08:13

#環境
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コマンドによる確認

これから行ってまいります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yu_1985

2021/10/14 10:17

Route53にEIPを設定しているのでALBを経由してない気がするのですが、図の記述は合ってますか? また、Apacheとアプリケーションのログも確認しましょう。
KNakamura

2021/10/15 00:19

ご回答ありがとうございます。 大変申し訳ありません、図の記述が誤っております…。 Route53にはレコードタイプAでALBを設定しております。 Apacheとアプリケーションのログ確認方法を調べて実践してみます。
yu_1985

2021/10/15 04:42

経路上のどこで時間がかかっているのかをきちんと調べる必要がありますね。 ブラウザの開発者ツールを使って表示速度を調べるなどもしてみてください。 ChromeならF12を押してNetworkのタブを開いた状態でアクセスすると調べられます。 us-east-2に作成しているのはなぜですか? ご自身がアメリカにいるのでなければ、日本からアメリカへのアクセスは物理的に時間がかかることがあります。 とはいえ1分はそれでもかかり過ぎなので恐らく根本的な原因ではないと思いますが…。 traceroute(Winならtracert?)コマンドで経路のどこかで時間を食ってないか調べてみるのもいいでしょう。
KNakamura

2021/11/03 08:16

yu_ 1985 様 アドバイス頂きありがとうございます。日が経過し恐縮ですが、試したことを追記しました。 us-east-2に作成しているのは、当初Availability Zoneの設定についてあまり分かっておらず気付いたらus-east-2になっていた次第です。。。 これからtracerouteコマンドでも調べていきますが、何か追加でお気づきの点がございましたらご教示頂けますと幸甚です。
yu_1985

2021/11/04 06:14

> SpringBoot内のapplication.ymlにログファイル出力の設定を行い確認しましたが、接続が遅いときでも特にログ上で異常はありませんでした。 ここで確認したのは何でしょうか? リクエストの処理時間は確認しましたか?
KNakamura

2021/11/12 12:50

yu_ 1985 様 再度日が空き申し訳ありません。 SpringBootのログで確認したのは、 ログレベルDEBUG以上でERROR等が発生していないかのみであり、 リクエストの処理時間は確認しておりませんでした。 下記の記事を参考にこれから取り組みます。 https://blogenist.jp/2019/05/09/8272/ (確認していたログは下記のようなものでした) 2021-11-12 21:38:40.391 DEBUG 3963 --- [ajp-nio-127.0.0.1-8009-exec-10] c.e.d.r.UserMapper.insertOneUser : ==> Preparing: INSERT IGNORE INTO GoogleUser (userID, sort) VALUES (?, 'date') 2021-11-12 21:38:40.395 DEBUG 3963 --- [ajp-nio-127.0.0.1-8009-exec-10] c.e.d.r.UserMapper.insertOneUser : ==> Parameters: ✗✗✗@gmail.com(String) 2021-11-12 21:38:40.403 DEBUG 3963 --- [ajp-nio-127.0.0.1-8009-exec-10] c.e.d.r.UserMapper.insertOneUser : <== Updates: 0 2021-11-12 21:38:40.404 DEBUG 3963 --- [ajp-nio-127.0.0.1-8009-exec-10] c.e.d.repository.UserMapper.selectSort : ==> Preparing: SELECT sort FROM GoogleUser WHERE userID = ? 2021-11-12 21:38:40.405 DEBUG 3963 --- [ajp-nio-127.0.0.1-8009-exec-10] c.e.d.repository.UserMapper.selectSort : ==> Parameters: ✗✗✗@gmail.com(String) 2021-11-12 21:38:40.407 DEBUG 3963 --- [ajp-nio-127.0.0.1-8009-exec-10] c.e.d.repository.UserMapper.selectSort : <== Total: 1 2021-11-12 21:38:40.408 DEBUG 3963 --- [ajp-nio-127.0.0.1-8009-exec-10] c.e.d.r.TaskMapper.selectUndoneTasks : ==> Preparing: SELECT * FROM Task WHERE done = false AND userID = ? ORDER BY CASE WHEN scheduledDate IS NULL THEN'2' WHEN scheduledDate = '' THEN '1' ELSE '0' END, scheduledDate ASC, startTime ASC 2021-11-12 21:38:40.409 DEBUG 3963 --- [ajp-nio-127.0.0.1-8009-exec-10] c.e.d.r.TaskMapper.selectUndoneTasks : ==> Parameters: ✗✗✗@gmail.com(String) 2021-11-12 21:38:40.424 DEBUG 3963 --- [ajp-nio-127.0.0.1-8009-exec-10] c.e.d.r.TaskMapper.selectUndoneTasks : <== Total: 4
guest

回答2

0

自己解決

自己解決しました。

もともとprivateなサブネット(EC2がある)にのみ設定していたIGWを、
publicのサブネット(RDSがある)にも設定したことで通信速度が安定するようになりました。
(参考:QiitaChrome + ELB(ALB)で接続が遅い問題)

ご助力いただきました皆様、ありがとうございました。

投稿2021/11/13 11:53

KNakamura

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

yu_1985さんも指摘していますが、もし図の通りでしたらR53の設定が間違っています。
R53には以下の設定が必要になります。
・レコードタイプ:A
・エイリアス:ON
・トラフィックのルーティング先:ALB
・ルーティングポリシー:シンプルルーティングポリシー

設定例
イメージ説明

投稿2021/10/14 23:05

rikues2000

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KNakamura

2021/10/15 00:24

ご回答ありがとうございます。 大変申し訳ありません、図の記述が誤っておりました。 Route53にはレコードタイプAでALBを設定しております。 またお名前.comで取得したドメイン名使用のため、レコードタイプNS, CNAME, SOAにも各種設定をしております。 (質問文を更新させていただきます)
yu_1985

2021/10/15 04:43

図の該当部分は確かに変でしたが、自分が回答に書かなかったのはそこが誤っていたとしてレスポンスに時間がかかる原因かどうかは不明だったからです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.39%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問