これからの季節に親子でハイキング! >>

アパッチのヘルスチェックにて、パケットをみました。
シーケンス番号を追っていきましたが、下記のような
通常ではない動作がありました。

<ケース1>
(1)サーバからのHTTPのGETに対して、クライアントがFIN.ACKパケットを返却する。
(2)サーバがFIN.ACKパケットをクライアントに送る。
(3)クライアントからRSTパケットが返却される。
※RSTパケット内にて、broken tcpとの記載あり

<ケース2>
(1)サーバからのFIN.ACKパケットに対して、クライアントからRST.ACKパケットが返却される。


・質問1
それぞれについて、正常な動作とはおもえないのですが、
異常でしょうか?

・質問2
FIN.ACKパケット又はRSTパケットが返却されるのはどんな場合が想定されるのでしょうか?

・質問3
FIN.ACKパケット→RST.ACKパケットは異常な動作でしょうか?

よろしくお願いします。

A 回答 (1件)

おつかれさまです。



質問1
ケース1というのはおかしいですね。
サーバからのHTTPのGETというのはありえません。
GETはクライアントから送信されるものです。
言葉のアヤでGETの応答電文がサーバから送信
されている間にFINがクライアンから来るという
ことであってもおかしくないと思います。

ケース2のRSTパケットについてもおかしくありません。
よくブラウザ上で通信途中(画面が全部表示されない)
で次のページへ移動することなどありますよね。
またサーバもクライアントも、keepaliveという
機能があります。一連のやりとりが終わっても、
次の通信のために一定期間コネクションを保持する
機能です。これは意外とおせっかい機能で時間が
たつと勝手にRSTを発行したりします。

質問2
FINは一連の通信が終わった時です。
上述のkeepaliveの機能も一応決まりがあって、
httpヘッダにカウンドダウンする数字があって
もうこの通信で終わりですよって1まで来たら
FINが発行されます。
またはkeepaliveのtimeout時間が過ぎると
RSTが出ます。
他のケースとしては通信不良で再送リトライ
オーバとなった場合とか、通信不良で通信の
シーケンスが合わなくなった場合とかに
RSTが出ることはあります。

質問3
FIN→RST クライアントがFINを出してコネクションを
開放した後に、FINをサーバが返してきたら、もう
コネクションはないのでサーバ側も開放してねと
RSTを投げるケースはあるでしょうね。

とにかく、
ケース1(1)以外はよくあることです。
クライアント(PCのブラウザだと思いますが...)は
人が操作しているので、ブラウザを×するとか
F5キー押すとか、いろんなことをやるでしょう。
WindowsやIEのそのあたりの動きは結構アバウトな
作りであることは確かですが....

いかがでしょう?
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QwiresharkでパケットモニタするとRetransmissionが多発しているという意味は?

現在、自分で作成したパケット送信クライアントプログラムをテストしており、3秒に1回のタイミングでインターネット上にあるサーバのグローバルipアドレスに対し、TCPパケットを発信させて受信するというテストを行っています。
しかし、3秒に一回データを送っているはずなのに、その間隔10秒とか20秒とか間隔が開いてしまう時があります。

wiresharkというパケットモニタソフトで送信側、受信側共にパケットモニタを行ってみたところ、”Retransmission”が多発しているということがわかりました。(tcp.analysis.retransmissionというフィルタ設定で検索)この現象はある時とない時があります。テストして10日ぐらい経つのですが、このパケットが確認されるのはお昼の12時頃と夕方の6時頃が多いのですが、このことからどのようなことが起こっていると考えられますか?

わかる方いらっしゃいましたらご教授よろしくお願いいたします。

Aベストアンサー

簡単に言うと「トラフィック過多によるパケットの再送が多発している」です。

噛み砕いて言えば「回線が混雑していて、送信したパケットが、他の誰かが送信したパケットと衝突(コリジョンが発生)してパケットが消えた。なので、もう一度、送り直した」と言う事。

>このパケットが確認されるのはお昼の12時頃と夕方の6時頃が多いのですが、このことからどのようなことが起こっていると考えられますか?

「お昼休み、終業時間の6時になると、みんな、メールをチェックしたり、個人的にインターネットを閲覧し、トラフィック過多が起き、回線が異常に混雑する」と言う事が起きていると考えられます。

解消するには以下の方法があります。
・「休み時間も、終業時間後も、プライベートでネットを使うな!」と言う「通達」を全社に出す
・社内LANを、トラフィック過多によるコリジョンが起きないよう高速で帯域のあるネットワークカード、LANハブ、ルーターに変える
・受信側と送信側を、社内LANから(電気的、アドレス的に)独立した別のLANにする

要は「混んでる時間帯なので仕方が無い」って事です。

簡単に言うと「トラフィック過多によるパケットの再送が多発している」です。

噛み砕いて言えば「回線が混雑していて、送信したパケットが、他の誰かが送信したパケットと衝突(コリジョンが発生)してパケットが消えた。なので、もう一度、送り直した」と言う事。

>このパケットが確認されるのはお昼の12時頃と夕方の6時頃が多いのですが、このことからどのようなことが起こっていると考えられますか?

「お昼休み、終業時間の6時になると、みんな、メールをチェックしたり、個人的にインターネットを...続きを読む

QWiresharkでみるときの、1回のパケット

Wiresharkでみるときの、1回のパケットを追う方法を探してます。

TCP通信にて、通信確立後にデータのやり取りをしている通信を数時間tcpdumpにて取得し、
Wiresharkで流れをみています。そのときに、1回のデータのやり取りと見るために方法を教えてください。


クライアントからのリクエストとサーバからのレスポンスで、

1回目クライアントからデータ送信し、
複数かいやり取りして、終了(200 OKを返却して)

2回目クライアントからデータ送信し、
複数かいやり取りして、終了(200 OKを返却して)

という動作を繰り返してますが、

この1回目がここからここまでのパケット、2回目がここからここまでのパケットと知りたいのです。

なんとなくみると、ストリームNoなどもありますが、
ストリームNoが1回の通信後とのNoかとおもったら、
ストリームNoでフィルタしたら、
1回目5回目8回目・・と複数回のものが同じストリームNoであり、
どうゆうことだとうと疑問になってます。

詳しい方よろしくお願いします。

Aベストアンサー

No1です。
>TCPストリーム単位でも複数のやりとりがあるのか?わからなくて悩んでます。

昔のHTTP/0.9というプロトコルでは、リクエストに対してレスポンスがあればそれでストリームを終わらせてましたが、現在のHTTP/1.1では1つのTCPストリームで複数のリクエストーレスポンスを行うのが普通です。
また、レスポンスを待たずに複数のレスポンスを続けて投げることも可能です。

Qネットワーク遅延について

お世話になります。
ご面倒かけますが、ご回答頂ければ助かります。

状況を説明させて頂きますと
あるプログラム(計算して結果を出力)をネットワーク上で共有フォルダにアクセスして
実行しております。

(1)スタンドアローンで実行(自分のPCにプログラムを保存)すると、実行時間が1~2分
(2)ネットワークの共有フォルダにアクセスして実行した場合 5分~10分かかります。
※できるだけマスタ配布のような業務が入る為、スタンドアローンでは利用しない方針です

なぜこんなに実行時間に差がでるのかという質問を頂いてます。

ネットワーク上のプログラムを実行しているのですから、ある程度遅くなるのは
当たり前です。とは回答しているのですが、理解してもらえません。

WireSharkを利用して、パケットを拾ったのですが
・ TCP Dup ACK
・ TCP Retransmission
・ TCP Previous segment lost
上記のようなパケットを拾いましたが、パケットを分割や再送信を行っているので
遅くなっていると話をしましたが、これがネットワークの問題なのかプログラムの問題か
確認(考え方)するにはどうしたらいいでしょうか?

参考程度でも結構ですので、お願いいたします。

お世話になります。
ご面倒かけますが、ご回答頂ければ助かります。

状況を説明させて頂きますと
あるプログラム(計算して結果を出力)をネットワーク上で共有フォルダにアクセスして
実行しております。

(1)スタンドアローンで実行(自分のPCにプログラムを保存)すると、実行時間が1~2分
(2)ネットワークの共有フォルダにアクセスして実行した場合 5分~10分かかります。
※できるだけマスタ配布のような業務が入る為、スタンドアローンでは利用しない方針です

なぜこんなに実行時間に差がでるのかという...続きを読む

Aベストアンサー

まず前提として、
スタンドアロンの場合、自らのプログラムやデータはメモリー上に格納され
更新など行っても、実際にはファイルに書かれるのでは無くメモリー上で更新されます。
なので、物理的なアクセスの発生が少なく高速で動作します。
しかしネットワークの場合は、「共有」という概念が働く為なるべくメモリーで
処理するのでは無く物理的なファイルに更新がかかるようになります。
※このあたりはソフトの設計にも共有の仕方によりOSの制御にもよりますが....

また、それらの読み込み・更新毎にネットワークを使ってデータやり取りする為、
ネットワークへの負荷が掛かること、ネットワークの混雑具合に影響される事など
速度低下する要因が多くなりますので、ネットワーク上のデータを利用するという事は
こういう事だと理解してもらう必要があります。

そして、パケットのエラーの内容を見ていると、ネットワークで障害が発生していますね。
原因としては、ケーブル・HUB・ルータ・NICなど機器全てを疑う必要があります。
まず、同じ事を複数のパソコンで実行して、同じような状況になる端末を特定し、
その影響範囲を調べます。

結果、その範囲に使ってる機器が特定されますので、
その機器を交換して問題ない事を検証すれば良いと思います。

まず前提として、
スタンドアロンの場合、自らのプログラムやデータはメモリー上に格納され
更新など行っても、実際にはファイルに書かれるのでは無くメモリー上で更新されます。
なので、物理的なアクセスの発生が少なく高速で動作します。
しかしネットワークの場合は、「共有」という概念が働く為なるべくメモリーで
処理するのでは無く物理的なファイルに更新がかかるようになります。
※このあたりはソフトの設計にも共有の仕方によりOSの制御にもよりますが....

また、それらの読み込み・更新毎にネットワ...続きを読む

QWEBサーバがFINを返さないようのですが…

FW-LB-Web×2台 の構成でサーバ構築、運用しています。

WebサーバはApacheです。
バージョンは今正確にわかりませんが、2.2だったように記憶しています。

Webサーバのログに200ステータスとして記録されている通信において、
LBからのFINに対してWebサーバがFINを返さないケースは何に起因する
と考えられるでしょうか。
また、その原因を調べる方法は何かありますでしょうか。
tcpdumpを使ってもWebサーバにはLBのIPが残らないので、問題究明
に時間がかかりそうで、他にも方法がないのか、と質問させていただ
いています。

質問の背景は下記のとおりです。
サイト監視サービスでエラーが発生するのでその原因を調査しています。
その中で、通信終了後にLBからFINを受けたWEBサーバがLBにFINを
返さないケースがある事がわかりました。
ただし、監視サービスからのアクセスに対しては毎回FINを返していない
ようですので、上記問題の原因ではないと思っています。

また、監視サービスからのHTTP1.1アクセスに対してのみFINが返って
いないようで、一般的なアクセス(ブラウザからの)の場合は返している
ようなのです。

監視サービスでは、GETコマンドをつかって直接(ブラウザを使わず)
アクセスしているようです。


以上何かお気づきの点があれば教えていただければと思います。

FW-LB-Web×2台 の構成でサーバ構築、運用しています。

WebサーバはApacheです。
バージョンは今正確にわかりませんが、2.2だったように記憶しています。

Webサーバのログに200ステータスとして記録されている通信において、
LBからのFINに対してWebサーバがFINを返さないケースは何に起因する
と考えられるでしょうか。
また、その原因を調べる方法は何かありますでしょうか。
tcpdumpを使ってもWebサーバにはLBのIPが残らないので、問題究明
に時間がかかりそうで、他にも方法がないのか、と質問させていた...続きを読む

Aベストアンサー

こんちす
乙です

ロードバランサはBIG-IPとALTEONとIP-COMの
三機種実務経験あります。

(1)WebサーバにはLBのIPが残らないので
これは見方を変えた方がいいです。
Webサーバの通信は全てLBが送信・受信しています。

(2)Apacheに不具合があるとは思えません(多分)

(3)LBの設定が誤っている

(4)LBの設定は正しいがLBにバグがある

(5)理由は明確にはないですが、Webサーバを
 1台停止させて、同じ現象が起きるか
 見てみる

Qpingでポートの指定

pingでIPアドレスを指定して、通信できるかどうかというのは
よく使いますが、pingでポートを指定して応答するかどうかは調べられるのでしょうか?

よろしくお願いします

Aベストアンサー

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含むICMP)ではできません。

FTPの疎通確認であれば、クライアントからサーバに対するTCP/21通信(FTP-CMD)が可能であること(サーバからクライアントへのTCP/21からの応答を含む)+サーバからクライアントに対するTCP/20通信(FTP-DATA)が可能であること(クライアントからサーバへのTCP/21からの応答を含む)が必要でしょう。

監視ソフトによるものであれば、
・クライアントからサーバへのログイン(TCP/21)
・クライアントからサーバへのlsの結果(TCP/20)
で確認すればよいでしょう。

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含む...続きを読む

Qtcp/ip通信で特定のデータが送れない

おせわになっています。
現在、秋月のH8ボート3069+RTL8019ボードを使用して、TCP/IPの通信プログラムを作成して
いたます。
ボードはホスト側に成っています。


H8OS等は使用していません。

パケットの送受信も有る程度問題なく出来ていて、クライアントからの通信確立も出来ています。
データの送受信を行っているときに、1バイトデータ 0x02を送信使用としたら、一番下のような
エラーが出てきました。

1バイトデータで0x00、0x01、0x03等は問題なく送れています。
Wiresharkで取り込んだデータの一部分を掲載します。

又、エラーとして[Expert Info (Error/Malformed): Malformed Packet (Exception occurred)]と
表示されていますが、実際何が原因でエラーに成っているのかが判りません。

有る程度強引に合わせこんでデータを作っている部分も有るのですが、0x02のデータだけが
送れないというのが判りません。
データを見て頂き、判る方がいましたら教えてください。



[Calculated window size: 64240]
[Window size scaling factor: -2 (no window scaling used)]
Checksum: 0xd1b9 [validation disabled]
[Good Checksum: False]
[Bad Checksum: False]
[SEQ/ACK analysis]
[Bytes in flight: 1]
Data (1 byte)
Data: 03
[Length: 1]
VSS-Monitoring ethernet trailer, Source Port: 0
Src Port: 0
0000 00 40 45 32 27 35 02 00 03 cb 36 06 08 00 45 00
0010 00 29 fc d7 40 00 80 06 3d ac ac 14 64 00 ac 14
0020 04 22 29 04 06 42 65 62 b7 da 9e 32 35 28 50 10
0030 fa f0 d1 b9 00 00 03 00 00 00 00 00 00
              --- このデータは送れている。



Window size value: 64240
[Calculated window size: 64240]
[Window size scaling factor: -2 (no window scaling used)]
Checksum: 0x8254 [validation disabled]
[Good Checksum: False]
[Bad Checksum: False]
[SEQ/ACK analysis]
[Bytes in flight: 1]
[Malformed Packet: FMTP]
[Expert Info (Error/Malformed): Malformed Packet (Exception occurred)]
[Message: Malformed Packet (Exception occurred)]
[Severity level: Error]
[Group: Malformed]
VSS-Monitoring ethernet trailer, Source Port: 0
Src Port: 0
0000 00 40 45 32 27 35 02 00 03 cb 36 06 08 00 45 00
0010 00 29 fc d7 40 00 80 06 3d ac ac 14 64 00 ac 14
0020 04 22 29 04 09 2f 65 62 b7 da d1 ae 4f 24 50 10
0030 fa f0 82 54 00 00 02 00 00 00 00 00 00
              --- このデータは送れていない。

宜しくお願いします。

おせわになっています。
現在、秋月のH8ボート3069+RTL8019ボードを使用して、TCP/IPの通信プログラムを作成して
いたます。
ボードはホスト側に成っています。


H8OS等は使用していません。

パケットの送受信も有る程度問題なく出来ていて、クライアントからの通信確立も出来ています。
データの送受信を行っているときに、1バイトデータ 0x02を送信使用としたら、一番下のような
エラーが出てきました。

1バイトデータで0x00、0x01、0x03等は問題なく送れています。
Wiresharkで取り込んだデータの一部分を...続きを読む

Aベストアンサー

>又、エラーとして[Expert Info (Error/Malformed): Malformed Packet (Exception occurred)]と
>表示されていますが、実際何が原因でエラーに成っているのかが判りません。

ざっと見た程度ですが……。

>0010 00 29 fc d7 40 00 80 06 3d ac ac 14 64 00 ac 14
>0010 00 29 fc d7 40 00 80 06 3d ac ac 14 64 00 ac 14

IPヘッダのIdentificationが同じ値(0xd7fc)のIPパケットで問題ないのですか?
手元のSSHサーバに接続したときのモノ(SSHサーバからのもののみ)では…
Identification: 0x0000 (0)
=>3WayハンドシェークのSYNパケットの返答
Identification: 0xdb28 (56104)
=>ハンドシェーク完了後、SSHサーバが送信してきたウェルカムメッセージ
Identification: 0xdb29 (56105)
=>クライアントからのパケットに対するACK応答パケット
Identification: 0xdb2a (56106)
=>SSHサーバからのオプションなどのクライアントへの通知
というように値が更新されていってますが。

パケットがMTUなどによって分割された場合にIdentificationが同じ値になることはあるようですが、その場合はFlagsとFlagment Offsetで制御されるハズです。
が…Flags(ダンプだと0x0014の場所の上位3ビット)のビット1が1となっていますので「分割を許可していない」状態ですし、Flagment Offsetは同値の0番となっています。
よって受信側では「不正なIPパケット」として破棄しますから、その次のTCP処理まで進まないかと思われますが…そこのところどうでしょうか?

参考URL:http://www.itbook.info/study/p89.html

>又、エラーとして[Expert Info (Error/Malformed): Malformed Packet (Exception occurred)]と
>表示されていますが、実際何が原因でエラーに成っているのかが判りません。

ざっと見た程度ですが……。

>0010 00 29 fc d7 40 00 80 06 3d ac ac 14 64 00 ac 14
>0010 00 29 fc d7 40 00 80 06 3d ac ac 14 64 00 ac 14

IPヘッダのIdentificationが同じ値(0xd7fc)のIPパケットで問題ないのですか?
手元のSSHサーバに接続したときのモノ(SSHサーバからのもののみ)では…
Identification: 0x0000 (0)
=>3Wayハンド...続きを読む

Q「いずれか」と「いづれか」どっちが正しい!?

教えて下さいっ!
”どちらか”と言う意味の「いずれか」のかな表記として
「いずれか」と「いづれか」のどちらが正しいのでしょう???

私は「いずれか」だと思うんですが、辞書に「いずれか・いづ--。」と書いてあり、???になってしまいました。
どちらでもいいってことでしょうか?

Aベストアンサー

「いずれか」が正しいです.
「いづれ」は「いずれ」の歴史的かな遣いですので,昔は「いづれ」が使われていましたが,現代では「いずれ」で統一することになっていますので,「いずれ」が正しいです.

Qポートの80と443

こちらのサービス(https://secure.logmein.com/)を利用すると、インターネットを見られるサーバーのポートの80と443が空いていればルータやファイアウォールに特段の設定なく外部からサーバーを操作できるそうですが、逆にサーバーのポートの80や443を空けることには何か危険性があるのでしょうか。

Aベストアンサー

ポート80は一般的なHTTP、ポート443はHTTPSです。
この2つのポートがあいていなければインターネット接続(WEBブラウジング)は出来ません。
ですから、ほとんどのファイアウォールでこのポートは開いています。(インターネット接続を制限している社内LANでは当然閉じていますが)

ちなみに、よく使うポートとしてはFTPで20、21、SMTP(送信メール)で25、受信メールPOP3で110あたりです。セキュリティポリシー上、この辺は制限される事も多いですが、HTTP 80、HTTPS(暗号化用)443は通常閉じません。


危険性?
WEBプロトコルを使ってFTP的なファイル転送(WebDAV)やVPN等も出来るようになっています。当然そこにはある種の危険はつきものですが、WEBブラウジングに伴う危険と大きく変わりません。ウィルス等に感染していればこの2つのポートだけでも相当危険でしょうね。

参考まで。

Qパケットロスと遅延について

(1)パケットロスって何でしょうか?
(2)パケットロスが10%でも、回線品質は良くないのでしょうか?WAN間でも必ずパケットロスは0%でないと品質は良いとは言えないのでしょうか?
(3)パケットロスが発生しても、データは遅くても完全に届くものでしょうか?それともパケットロス分のみ捨てられて、相手に届くのでしょうか?
(4)パケットロスが発生すると、遅延も必ず起きているのでしょうか?
(5)パケットロスと遅延がネットワーク側に問題があると判明した場合、どのような措置を講ずるのでしょうか?
(6)TCPパケットはパケットロスがあると再送しますが、UDPパケットは再送しないで破棄されるのでしょうか?

以上、ネットワークに精通されておる方、お願い申し上げます。

Aベストアンサー

> (1)パケットロスおよび遅延はルータ/SWのMIBからNMSへトラップとして上がってくるのですが、パケットロスおよび遅延はルータ/SWのどの機能で判断しているのでしょうか?

それなりのL2SWはインタフェース(ポート)ごとにトラフィックやパケットロスのカウンタを持っているので、そのカウンタが上がるタイミングでSNMPトラップを出力しているはずです
遅延もSNMPトラップが出ますか?
CiscoのルータはSAA(Service Assurance Agent)という機能があって遅延やジッタをSNMP MIBで見たりできたと思いますが、他のL2SWで遅延を測定/監視できるものは知らないです

> (2)遅延は何msまでが許容範囲とかありますか?

アプリケーションによります
VoIPなどはシビアに効いてきますし、Web参照であれば1秒でもあまり気にならないでしょう
VoIPは遅延だけでなくジッタ(揺らぎ、遅延のばらつき具合)も影響します
ちなみにY.1541は遅延やジッタも定義してますけど、ちゃんとリンク先の情報読みました?

> (3)パケット落ちは、 ping何発中、何発までならOKとかありますでしょうか?

これもアプリケーション次第でしょう
再送の有無や再送にかかる時間とそれがどこまで許容できるか次第かと

> (1)パケットロスおよび遅延はルータ/SWのMIBからNMSへトラップとして上がってくるのですが、パケットロスおよび遅延はルータ/SWのどの機能で判断しているのでしょうか?

それなりのL2SWはインタフェース(ポート)ごとにトラフィックやパケットロスのカウンタを持っているので、そのカウンタが上がるタイミングでSNMPトラップを出力しているはずです
遅延もSNMPトラップが出ますか?
CiscoのルータはSAA(Service Assurance Agent)という機能があって遅延やジッタをSNMP MIBで見たりできたと思いますが、他のL2...続きを読む

QWebで重い処理をするとリクエストが10回飛ぶ

PHPでフレームワークのCAKEを使ってWebシステムを作っているのですが、どうしてもわからない点があるので、ご教授頂きたく質問させていただきました。

現在Webサーバ2台とDBサーバ1台であるサービスを運営しています。
Webサーバはロードバランサで負荷分散をしています。
画面上でどうしても重たい処理をする必要があり、実行しているのですが、リクエストが10回飛びデータが10個登録されるという不思議な現象が起こっており対応に困っています。
開発用にWebとDBが一緒の開発用サーバもあります。やったことは

1.開発用のサーバで同じデータ、同じ処理を実行
リクエストは1回でデータも1個登録
apacheのアクセルログにも1回アクセスされている

2.運営用のサーバで同じ処理だが、データ量を減らして実行
リクエストは1回でデータも1個登録
apacheのアクセルログにも1回アクセスされている

3.運営用のサーバで同じデータ、同じ処理をIPアドレスを指定して実行
リクエストは1回でデータも1個登録
apacheのアクセルログにも1回アクセスされている

4.運営用のサーバで同じデータ、同じ処理を実行
リクエストは10回でデータも10個登録
apacheのアクセルログにも10回アクセスされている

以上の結果からロードバランサで何かしらのことがされているのかと思い、サーバ会社に問い合わせてみたのですが、「そんなことはない」との回答でした。

他に何をどう調べたらいいのかもわからず、かなり手詰まりなかんじです。
手がかり、確認内容などなんでもいいので、ご教授頂けないでしょうか。
よろしくお願いします。

PHPでフレームワークのCAKEを使ってWebシステムを作っているのですが、どうしてもわからない点があるので、ご教授頂きたく質問させていただきました。

現在Webサーバ2台とDBサーバ1台であるサービスを運営しています。
Webサーバはロードバランサで負荷分散をしています。
画面上でどうしても重たい処理をする必要があり、実行しているのですが、リクエストが10回飛びデータが10個登録されるという不思議な現象が起こっており対応に困っています。
開発用にWebとDBが一緒の開発用サーバもあります。やったこと...続きを読む

Aベストアンサー

とりあえず、クライアント側の通信内容を見てみてはどうでしょう。

リクエストは以下の順で流れます。

ブラウザなどクライアント → ロードバランサ → Apache → PHP

クライアントが 1回リクエストを送って、Apacheに 10回くるなら、
ロードバランサが悪さをしてる可能性が高いです。

クライアントが PCのブラウザなら、
FireFox の LiveHttpHeaders という AddOn で簡単な通信内容がみれます。
他にはWireSharkなどのパケット監視ツールも使えます。

もしブラウザが 10回リクエストを送っているなら、
ロードバランサはたぶん関係ありません。

その場合はブラウザのレスポンスも見ます。

リクエスト1 → レスポンス1 → リクエスト2 → レスポンス2→...
のようにレスポンス取得完了後に、次のリクエストを送っているなら、
サーバー側が再通信させるレスポンスを返しているのではないでしょうか。

リクエスト1 → リクエスト2 → レスポンス1 → レスポンス2→...
のようにレスポンスが完了する前に次のリクエストを送っていれば、
サーバー側は関係なく、クライアント側が連続リクエストしていることになるので、
JavaScriptやブラウザの問題だと思います。

参考になるか分かりませんが、私が以前経験した似たようなケースで、
登録データが多すぎる → 通信に時間がかかりすぎてタイムアウト → クライアントの機能で通信自動リトライ
結果、何度もリクエストしてデータが重複登録される、ということがありました。

とりあえず、クライアント側の通信内容を見てみてはどうでしょう。

リクエストは以下の順で流れます。

ブラウザなどクライアント → ロードバランサ → Apache → PHP

クライアントが 1回リクエストを送って、Apacheに 10回くるなら、
ロードバランサが悪さをしてる可能性が高いです。

クライアントが PCのブラウザなら、
FireFox の LiveHttpHeaders という AddOn で簡単な通信内容がみれます。
他にはWireSharkなどのパケット監視ツールも使えます。

もしブラウザが 10回リクエストを送っているなら、
ロード...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング