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

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

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

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

1679閲覧

apacheのレスポンスが特定の秒数を超えたらアラートを出したい

newbiemstr

総合スコア43

Apache

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/08/09 03:06

現在、apacheの監視をしています。時折お客様からくるクレームにいくら待ってもページが開かない、というものがあります。
そこで早速監視を追加しようとしたのですが、どのようにすれば分からず、皆様のお知恵を借りたいと思い、
質問させていただきます。
なお、環境はCakePHP3です。

実施したいこと

お客様がページにアクセスした時、任意の秒数待ってもページが開かなかったらアラートを出したい。
※ここでは仮に30秒とさせていただきます

試したこと

  • apacheのログに「response_time:%D」(一部抜粋)を追加して何秒かかっているか監視した。

なおログ形式はLTSVになっています。

結果

  • ログが記録されるのはクライアントのブラウザにページを返却した後(?)のため、例えば10分待って

ページが開いた場合はログに600,000,000マイクロ秒となってしまい、この数値を知ったところで
結局10分待たせてしまったことしかわからない。

試したこと

  • httpdのCPU使用時間を計測し、何秒かかっているか監視した

結果

問題のページを開いたところ、50秒ぐらいかかって開いたが、上記のhttpdのCPU時間は1秒ほどだった。

  • そのためこの計測の仕方は意味がなさそうと感じた

他に計測する値として考えたもの

  • アクセス時に新規作成されるソケットの生存(?)時間。時間の取得方法が分からなかった。

なお、MySQLですが、こちらもクエリが遅く、今回の現象に一役買っています。DBについては
indexを貼って対処する予定です。

以上、よろしくお願いします。

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

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

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

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

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

m.ts10806

2019/08/09 03:11

30秒として 30秒以下で表示される確率が低いのであればその対策って意味がないのでは?
m.ts10806

2019/08/09 03:16 編集

要件とは異なる考え方なので回答ではなくこちらに書きますが、 単なるページ表示で、一般的なWebサイトであれば待てる平均時間って本当にわずかです。「表示が遅く感じない工夫」も必要そうですが「そもそもなぜそんなに時間がかかるのか」を追求しないとサーバー負荷でもっと大問題になるように思います。
newbiemstr

2019/08/09 05:05

m.ts10806様 ご意見ありがとうございます。 この問題のwebサイトなのですが、いわゆる社内システム的なものとなっており、ある程度の表示遅れについては勘弁していただいています。 ただしDBのレコード数が非常に多いお客様では、集計処理などを行ったときにレスポンスが遅くなって(それこそ10分ぐらいかかる)しまいます。 > 「表示が遅く感じない工夫」も必要そうですが「そもそもなぜそんなに時間がかかるのか」を追求しないと こちらについてはおっしゃるとおりです。原因調査および改修に時間をかけるべき、というのは分かっているのですが、残念ながら私が運用・監視担当者で開発にあまり手出しができない立場であり、また運用としての当面の対策として、お客様から連絡を受けて問題が発覚するような体制ではなく、お客様が気づく前に感知できるようにしたい、という思いがあります。
m.ts10806

2019/08/09 05:07

揚げ足取るわけではないですが「時折お客様からくるクレームにいくら待ってもページが開かない、というものがあります。」時点で既に気づいていると思っても良いのではと。 あまり開発で手出しできないのであればやはり開発部門の方にきちんと対応依頼したほうが良さそうですね。 さすがに何分も待たされては業務に支障がでると思いますので。
newbiemstr

2019/08/09 09:23

m.ts10806様 開発は協力会社に依頼しており、また場所的にも遠いため認識はしていてもそれほど強く感じていないようです。 また、上司の優先順位も新機能の追加が高くなっているため、保守?的なものはやりたがらないのです。 とりあえずこの弊社内での問題はおいておくとして、「apacheのレスポンスが特定の秒数を超えたらアラートを出したい」のご意見を伺えたらと思います。 これは仕事としてもそうですが、個人的にもどうやったらいいんだろう?という興味もありますので。
guest

回答2

0

問題のページを開いたところ、50秒ぐらいかかって開いたが、上記のhttpdのCPU時間は1秒ほどだった。

これについては、CPU使用時間なので
例えばDBを待っている時間はカウントされないのでは(重いのはデータ量が多くてDBが遅いんだと思います)

https://qiita.com/isaoshimizu/items/ee555b99582f251bd295
起動時間と現在の時刻の差を取ればいけるのでは・・・(どのリクエストと付き合わせるかは考えてない)

あと、仮にDBが遅い、という前提であればSlowQueryLogを取った方が原因の究明ができそうじゃないですかね

投稿2019/08/09 06:41

mikkame

総合スコア5036

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

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

0

ベストアンサー

結局はPHPが実行されているので、
処理開始時からポイントポイントで経過時間を計算して保持しておき、
「特定の秒数」を経過した段階でメール飛ばすようにしたらいいのではないでしょうか(「アラート」を「通知」と捉えました。処理中断はしない)。

PHPの処理速度を計測

実行中である以上は何かしらの処理の途中でしょうし、
処理時間にかかるのは「重たくなるSQLを実行したとき」「ループ」「HTMLのレンダリング(ループに加味してもいいかも)」が基本と思います。

投稿2019/08/09 09:31

m.ts10806

総合スコア80850

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

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

newbiemstr

2019/08/19 04:04

m.ts10806様 ご教授いただきましてありがとうございます。教えていただいた内容をステージング・dev環境などに入れて、時間がかかっている箇所を調査したいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問