![]() ![]() ![]() | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
Hida_ | Åê¹ÆNo.984 投稿日時: 2003-11-6 22:11 |
新米 ![]() ![]() 居住地: 東京都 投稿: 17
使用環境:
![]() ![]() ![]() ![]() |
FCS1.5の切断認識について 肥田と申します。
いつもお世話になっております。 新しくなってから、初めて投稿させていただきます。 これからも、よろしくお願いいたします。 FCS1.5のサーバーサイドスクリプトで、クライアントの接続が切断された時、ColdFusionを使ってdBに切断日時を書き込んでいるのですが、10回に1?2回の割合で、正しい日時が書き込まれず、困っております。 実際に切断された日時より、5分位多いのです。 5分多いのは、IISの設定で、「webサイト」タブ->「接続」->「接続のタイムアウト」の部分を300秒に設定しているせいでしょうか?以前、900秒に設定していた時は、15分位多かったです。 ここの設定を0秒とか1秒にすればよいのかと思いましたが、サーバーは現在本稼働しておりますので、負荷が心配で実行できません(現在既にかなり負荷がかかっているので)。 クライアントの接続が切断される理由は、 1.クライアントが切断ボタンを押した時 2.クライアントのマシンがフリーズした時 3.クライアントの通信が何らかの理由で断たれた時 等が考えられます。 納得いかないのは、どんな理由であろうと、クライアントは切断されたのに、確実に認識してくれない事です。 サーバーは基本的にデフォルト設定のままなのですが、何か他に設定した方が良い部分があるのでしょうか? また、同じIISの設定の場所にある「HTTPキープアライブを有効にする」にチェックを入れておりますが、無効にするとマズイのでしょうか?どなたか無効にされてる方、または無効にされた経験のある方はいらっしゃいますか? 開発環境は下記の通りです。 FCS 1.5 for Win ColdFusion MX for Win MS-Access 2002 for Win Server:Windows2000 Server 開発用マシン:Windows XP よろしくお願いいたします。 以上 |
nekozen | Åê¹ÆNo.986 投稿日時: 2003-11-6 23:05 |
新米 ![]() ![]() 居住地: 投稿: 1
使用環境:
|
Re: FCS1.5の切断認識について はじめまして、nekozenです。
まず、「HTTPキープアライブを有効にする」を気にされていますが、 1.5をアップデートされていますか? バージョン1から存在する WEBサーバーのKEEP ALIVEのオンで、 FCSリモーティングで接続失敗する 問題はバグフィックスされているようです。 |
ゲスト | Åê¹ÆNo.996 投稿日時: 2003-11-7 1:14 |
Re: FCS1.5の切断認識について 引用:
FCS1.5のサーバーサイドスクリプトで、クライアントの接続が切断された時、ColdFusionを使ってdBに切断日時を書き込んでいるのですが、10回に1?2回の割合で、正しい日時が書き込まれず、困っております。 この不具合がどこで起きているかを確認されるのが、まず必要だと思います。 今の状況では、 ・クライアント側の問題 ・Flash Communication Server での問題 ・ColdFusion での問題 ・DB 側の問題 すべてが考えられますので・・・ Flash Communication Server 側では SharedObject で情報が記録できますので、ここでのログアウト処理開始時間も記録して、DB 側での時間と比較してみるのも一つの手だと思います 引用: また、同じIISの設定の場所にある「HTTPキープアライブを有効にする」にチェックを入れておりますが、無効にするとマズイのでしょうか?どなたか無効にされてる方、または無効にされた経験のある方はいらっしゃいますか? nekozen さんが書かれているように、1.5.1 でないと keep-alive が ON の場合は、FlashRemoting に不具合があるそうです。 ただしこれを off にすると、Web サーバーでのクライアントとの通信が毎回切れますので、keep-alive に対応したブラウザが多い場合は、Web サーバー側の負荷が高くなる可能性があります。 1.5 にはその他の不具合もたくさんあるようですので、確実なのは、1.5.1 にバージョンアップされることです。 http://www.macromedia.com/support/flashcom/downloads_updaters.html 引用: 納得いかないのは、どんな理由であろうと、クライアントは切断されたのに、確実に認識してくれない事です。 クライアントが切断された状態でも、Flash Communication Server 側がそれを認識できない状態では、クライアントは切断されたことにはなりません。 たとえば、通信環境の悪化で通信不能になってしまった場合などが考えられます。 そういう状況では、Flash Communication Server 側で「このクライアントとは通信していないのでもう存在しない」と判断されるまでは、そのクライアントは存在し続けます。 引用: サーバーは基本的にデフォルト設定のままなのですが、何か他に設定した方が良い部分があるのでしょうか? http://www.macromedia.com/support/flashcom/releasenotes/mx/rn_mx_151.html にも書かれていますが、idle 状態になったクライアントの無通信時間の判別は、1.5 まではデフォルトでは 20 分です。 1.5.1 からはこれが変更されて、1 分毎に確認が行われるようになっています。 |
|
Hida_ | Åê¹ÆNo.1003 投稿日時: 2003-11-7 2:50 |
新米 ![]() ![]() 居住地: 東京都 投稿: 17
使用環境:
![]() ![]() ![]() ![]() |
Re: FCS1.5の切断認識について 肥田です。
nekozen様、ご返事ありがとうございます。 引用: まず、「HTTPキープアライブを有効にする」を気にされていますが、 はい。既に1.5.1にアップデートしております。 キープアライブはクセモノだというお話を聞いたことがあったので(どのようにクセモノか私には解らないのですが。。。)、ちょっと気になったのです。 OSのヘルプを見ても、オンにすることを推奨しておりますので、オフにする勇気が無かったので、ちょっと皆様に伺ってみようと思いました。 ありがとうございました。 今後とも、よろしくお願いいたします。 |
Hida_ | Åê¹ÆNo.1006 投稿日時: 2003-11-7 4:28 |
新米 ![]() ![]() 居住地: 東京都 投稿: 17
使用環境:
![]() ![]() ![]() ![]() |
Re: FCS1.5の切断認識について 肥田です。
Ryuichi様、ご返事ありがとうございます。 引用: この不具合がどこで起きているかを確認されるのが、まず必要だと思います。 そうですね。 引用: Flash Communication Server 側では SharedObject で情報が記録 申し訳ございません。私にはちょっと難しいアドバイスで理解できないです。。。 現在、クライアントが切断されると、サーバーサイドスクリプトで日時をゲットし、dBに書き込んでいます。 それとは別に、クライアントが切断ボタンを押した時に、クライアントのマシン内で日時をゲットしてdBに書込みもしています。 当初は、クライアントが正しく終了しなかったため(=切断ボタンを押さなかったため)起こっていると思っておりましたが、切断ボタンを押した時も起きてしまったため、関係ない事がわかりました。 引用: nekozen さんが書かれているように、1.5.1 でないと keep-alive はい。既に1.5.1にアップデートしております。 引用: ただしこれを off にすると、Web サーバーでのクライアントとの そうですよね。。ここをOFFにすれば、もっと機敏に(?)切断を認識してくれるのかなぁ。。と思ったりもしたのですが! 既にサーバーには負荷がかかっており、配信部分が真っ黒になったり、配信部分を含む.swfを貼り付けた部分だけブランクで表示されたりしていますので(どちらもブラウザの更新ボタンを何度が押すと直りますが。。。)怖くてOFFにできないです。 引用: クライアントが切断された状態でも、Flash Communication Server 確かにそうですね。 引用: たとえば、通信環境の悪化で通信不能になってしまった場合などが考えられます。 はい。このケースが結構多いようです。 引用: そういう状況では、Flash Communication Server 側で「このクラ 「クライアントが切断ボタンを押して切断する」事と「クライアントが通信環境の悪化で通信不能になって切断される」事は、FCSからみれば、 > 「このクライアントとは通信していないのでもう存在しない」 という意味で同じ事だと思っておりました。しかし、よく考えてみれば、切断ボタンを押すということは、FCSに「切断します」と知らせているので、同じじゃないですね。 クライアントの視点で「通信環境の悪化で接続が一度切れたのに自動的に再接続されたみたいだ」というケースが何件もあるのですが、それはFCSが切断されたと認識していないので、単に配信を続けているだけの事なのですね。 問題は、この > 「このクライアントとは通信していないのでもう存在しない」 と、いつ認識してくれるかだと思うのですが、 引用: にも書かれていますが、idle 状態になったクライアントの無通信 1分毎という事は、ズレは最大1分ですよね。 しかし、なぜかIISの設定の「接続のタイムアウト」の値と連動しているようです。 また、たまにですが、別なクライアントが切断した時、ついでに気がつくのか、一緒に処理される事があります(偶然とも思えないタイミングです)。 沢山のアドバイスありがとうございます。 現在、サーバーは本稼働しておりますので、あまり冒険はできませんが、アドバイスを参考に検証してみます。 ありがとうございました。 今後とも、よろしくお願いいたします。 |
ゲスト | Åê¹ÆNo.1008 投稿日時: 2003-11-7 5:24 |
Re: FCS1.5の切断認識について 引用:
>Flash Communication Server 側では SharedObject で情報が記録できますので、ここでのログアウト処理開始時間も記録して、DB 側での時間と比較してみるのも一つの手だと思います サーバーサイドスクリプトで FlashRemoting での通信を行う前に、SharedOBject でその時間を記録しておけば、FlashRemoting での不具合かどうかの切り分けに使えるという話です。 Flash Communication Server にも SharedObect や FLV でのデータ記録機能がありますので、その辺も活用しましょう!という話です。 ちなみに、SharedObject は、その名の通り「オブジェクト」が保存出来ますので、配列等を使えば簡易 DB としても使えます。 引用: 現在、クライアントが切断されると、サーバーサイドスクリプトで日時をゲットし、dBに書き込んでいます。 この時間が狂っているということはありませんか? Flash Communication Server、ColdFusion、DB は全て同じサーバーにあるのでしょうか? 引用: それとは別に、クライアントが切断ボタンを押した時に、クライアントのマシン内で日時をゲットしてdBに書込みもしています。 これは、CGI を経由して DB に書き込みをしているということですか? これと Flash Communication Server で記録している時間が合わないという話なのでしょうか? それとも、これはデバッグ用ですか? 引用: 当初は、クライアントが正しく終了しなかったため(=切断ボタンを押さなかったため)起こっていると思っておりましたが、切断ボタンを押した時も起きてしまったため、関係ない事がわかりました。 NetConnection は、close を明示的に呼ばなくても、Flash Player が終了する時に全ての接続に対して NetConnection.close と同等の処理を行ってくれます。 通信不能などの特別な状況が無い限りは、この部分で切断処理が行われないということは無いと思います。 ちなみにこういう切断処理は、XMLSocket の場合でも行われています。 引用: ただしこれをそうですよね。。ここをOFFにすれば、もっと機敏に(?)切断を認識してくれるのかなぁ。。と思ったりもしたのですが! 一応念のためですけれど・・・、keep-alive は Web サーバーへのアクセス(ColdFusion も含む)のアクセスのみに影響します。 クライアントから Flash Communication Server への RTMP/RTMPT での通信には影響しません。 Flash Communication Server と Web サーバーは、基本的には関連性は全くありません。 Flash Communication Server から ColdFusion のサーバーなどに FlashRemoting で通信を行う場合のみ、Web サーバーの keep-alive の影響を受けることがあるという話です。 引用: 「クライアントが切断ボタンを押して切断する」事と「クライアントが通信環境の悪化で通信不能になって切断される」事は、FCSからみれば、 はい、後者はサーバーによる強制切断になります。 もしかするとクライアントでは、まだ繋がっていることになっているかもしれませんが、その条件下ではサーバー側で強制的に切断されるということです。 その場合にもし通信が回復したら、クライアントではいきなり「通信切断」状態になります。 引用: クライアントの視点で「通信環境の悪化で接続が一度切れたのに自動的に再接続されたみたいだ」というケースが何件もあるのですが、それはFCSが切断されたと認識していないので、単に配信を続けているだけの事なのですね。 本当に切断している場合は、情報オブジェクトにメッセージが返ってきます。 それが返ってこない間は、クライアントの Flash Player は“繋がっている”と思っています。 その辺はコンポーネントの「コネクションライト」等を使って、ユーザーに分かりやすく示してあげた方が良いと思います。 引用:
いいえ。 上のページにも書かれているように、idle 状態になってからの時間が 1 分を経過したもの・・・です。 1.通信が行われなくなったクライアントは idle 状態になる アプリケーションインスペクタでこの状態は確認出来ます。 どのくらいの時間で idle 状態になるかは不明です。(そういう設定は無さそう) 2.idle 状態が 1 分以上経過している 3.ping でクライアントに応答確認する この“ping”は、Flash Communication Server の機能だと思われます 4.応答無しの場合は、そのクライアントは強制切断 という流れになると思います。 つまり実際には、1 分以上は掛かると思います。 引用: しかし、なぜかIISの設定の「接続のタイムアウト」の値と連動しているようです。 今もこの値を変更して、変化があるのでしょうか? またその時クライアントでは、Flash Communication Server と関連のある処理が行われていますか? 引用: また、たまにですが、別なクライアントが切断した時、ついでに気がつくのか、一緒に処理される事があります(偶然とも思えないタイミングです)。 ちょうどその時、ガーベジコレクション(GC)が行われるタイミングだった時は、そういうこともあるかもしれませんね。 引用: 現在、サーバーは本稼働しておりますので、あまり冒険はできませんが、アドバイスを参考に検証してみます。 検証だけなら、デベロッパ版もありますよ ![]() |
|
Hida_ | Åê¹ÆNo.1064 投稿日時: 2003-11-8 1:29 |
新米 ![]() ![]() 居住地: 東京都 投稿: 17
使用環境:
![]() ![]() ![]() ![]() |
Re: FCS1.5の切断認識について 肥田です。
Ryuichi様、度々ご返事ありがとうございます。 引用: サーバーサイドスクリプトで FlashRemoting での通信を行う前に、SharedOBject でその時間を記録しておけば、FlashRemoting での不具合かどうかの切り分けに使えるという話です。 なるほど! 何でもかんでもColdFusionでdBに記録する事しか考えてなかったので、確かにこうなってくると別な角度で確認しないとダメですね。調べながらやってみます。 引用: > 現在、クライアントが切断されると、サーバーサイドスクリプトで日時をゲットし、dBに書き込んでいます。 狂っていないと信じたいのですが。。。。 application.onDisconnect = function() { } の中に書いているので、クライアントの切断さえこちらの意図通りに認識してくれれば、大丈夫だと思うのですが。。。 10回に1?2回程度上手くいかないのですが、言い方を変えれば8?9割はOKなのです。 引用: Flash Communication Server、ColdFusion、DB は全て同じサーバーにあるのでしょうか? いいえ、FCSとColdFusion&dBに分けています。 引用: > それとは別に、クライアントが切断ボタンを押した時に、クライアントのマシン内で日時をゲットしてdBに書込みもしています。 Flash->FlashRemoting->ColdFusion->MS-Accessで書き込んでいます。 記録目的は、デバッグ用です。 クライアントのマシンの時計でゲットしているので、サーバーとピッタリ秒まで同じになることは、まずありません。 切断時だけではなく、接続時もそれぞれ同じ方法で日時を取得して、それぞれ退室時間?入室時間で接続時間を計算しております。 問題なくクライアントの切断をFCSが認識した時は、接続時間は一致しています。 引用: 通信不能などの特別な状況が無い限りは、この部分で切断処理が行われないということは無いと思います。 私も「切断」ボタンを押しているのに切断処理が行われないのが不思議なのです。何か別な要因があるのでしょうが、今のところ解りません。同様のケースの共通点を見出そうとしておりますが。。。 引用: Flash Communication Server から ColdFusion のサーバーなどに FlashRemoting で通信を行う場合のみ、Web サーバーの keep-alive の影響を受けることがあるという話です。 FlashRemotingを使用しているので、影響を受けている可能性がありますね。 引用: どのくらいの時間で idle 状態になるかは不明です。(そういう設定は無さそう) すぐにidle状態になってほしいですね。。。ちょっとでもヘンな事になったら、スパッと切断された事になってくれるとこのケースの場合は都合がいいのです。 引用: 今もこの値を変更して、変化があるのでしょうか? 今変えた訳ではないのですが、最初はデフォルトの900秒でした。その時は、おかしな記録の殆どがクライアントが切断した時間より15分位長い事になっておりました。そして設定を300秒に変更してからは、殆どが5分位長くなり、15分ってケースは無くなりました。なので「接続のタイムアウト」があやしいと思ったのです。 “その時”がどの時か分からないのですが(すみません)、クライアントは接続した時?切断するまでの間、映像を受信したり、SharedObectでいろいろ処理したり、dBに書き込みをしたりしています。 引用: 検証だけなら、デベロッパ版もありますよ はい。動作確認や検証で使用しています。しかし、実機と同レベルのハードウエアを完全に用意できない事、何よりも自分で検証している時はいつも大丈夫なのです。従って、自分でその現象を起こす事ができないのです。それは、検証している通信環境、マシンのスペックやコンディションが良いからなのかもしれませんね。 いろいろ沢山ありがとうございます。 よろしくお願いいたします。 |
ゲスト | Åê¹ÆNo.1070 投稿日時: 2003-11-8 2:47 |
Re: FCS1.5の切断認識について 引用:
FCSとColdFusion&dBに分けています。 1.切断ボタンが押される 2.クライアントでは NetConnection.close が実行される 3.それに反応して、サーバーでは application.onDisconnect が実行される 4.サーバーサイドスクリプトで日付を取得 5.Flash Remoting 6.実際の切断処理 ということですね? 引用: 10回に1?2回程度上手くいかないのですが、言い方を変えれば8?9割はOKなのです。 まれに起きるということであれば、個人的には 2 ? 3 の部分か、5 のような気がします。 引用: Flash->FlashRemoting->ColdFusion->MS-Accessで書き込んでいます。 サーバーは混んでいる・・・という話でしたけれど、Flash Communication Server と Flash 側からほぼ同時刻くらいにアクセスして、ColdFusion や DB 側で要求待ち等は発生していないでしょうか? あと、ColdFusion 側では DB でエラーが発生した場合の処理などは入っていますか? 引用: 今変えた訳ではないのですが、最初はデフォルトの900秒でした。その時は、おかしな記録の殆どがクライアントが切断した時間より15分位長い事になっておりました。そして設定を300秒に変更してからは、殆どが5分位長くなり、15分ってケースは無くなりました。なので「接続のタイムアウト」があやしいと思ったのです。 ・サーバーサイドでの Flash Remoting ・クライアントのコンテンツからの Flash Remoting の部分に、リトライの仕組みはありますか? 引用: 引用: すぐに idle になって切断されるような状態になると、今度は回線が混んでいる場合にはバシバシ切れるようになってしまいます(^^; この辺はバランスが非常に難しい部分だと思います。 引用: それは、検証している通信環境、マシンのスペックやコンディションが良いからなのかもしれませんね。 もし Flash Remoting の通信自体はアップデータのおかげで正常に行われているとしたら、この辺に左右されている部分があるのかもしれません。 もしそうであれば、Flash だけの問題ではない可能性もありますので、結構厄介な検証になりそうですね・・・ ![]() |
|
Hida_ | Åê¹ÆNo.1120 投稿日時: 2003-11-9 2:41 |
新米 ![]() ![]() 居住地: 東京都 投稿: 17
使用環境:
![]() ![]() ![]() ![]() |
Re: FCS1.5の切断認識について 肥田です。
Ryuichi様、度々ご返事ありがとうございます。 引用: 1.切断ボタンが押される はい。そうです。 引用: まれに起きるということであれば、個人的には 2 ? 3 の部分か、5 のような気がします。 私も、2?3の部分だと思います。 クライアントが切断した事を認識してくれさえすれば、大丈夫ではないかと思います。 引用: サーバーは混んでいる・・・という話でしたけれど、Flash Communication Server と Flash 側からほぼ同時 要求待ち等は発生していないようです。 エラー処理は・・・、結果を返す程度です(それはエラー処理とは言わない??)。 dBの記録を見る限り、書き損じた事はないようです。 引用: ・サーバーサイドでの Flash Remoting ありません。 引用: すぐに idle になって切断されるような状態になると、今度は回線が混んでいる場合にはバシバシ切れるようになってしまいます(^^; そうですねぇ。。。切断するつもりじゃな時に、バシバシ切れまくっても困りますね。。。なかなか都合のいいようにはいきませんね ![]() 引用: もしそうであれば、Flash だけの問題ではない可能性もありますので、結構厄介な検証になりそうですね・・・ はい。私もそんな気がします。クライアントの通信環境にも結構依存しているのではなかと思います。自分で状況を再現できないので、やりにくいのですが、地道に検証を続けます。 何か決定的な事が分かりましたら、ご報告したいと思います。 ありがとうございました。 |
ゲスト | Åê¹ÆNo.1136 投稿日時: 2003-11-9 23:22 |
Re: FCS1.5の切断認識について 引用:
私も、2?3の部分だと思います。 クライアントで、切断ボタンを押したときの処理はどのようになっていますか? 押したら無条件で、終了画面に移動したりしていませんか? 引用: クライアントの通信環境にも結構依存しているのではなかと思います。自分で状況を再現できないので、やりにくいのですが 接続中のクライアントの通信不能状態を確認するだけであれば、サーバーに接続したクライアントのネットワークケーブルを強制的に抜いたりすることで、ある程度は再現できると思います。 引用: 要求待ち等は発生していないようです。 「書き損じ」というのはどういう状態ですか? ユーザーの入力(たとえばユーザー名)から検索を行う場合には、その内容によっては SQL エラーのようなケースが考えられます。 また、ColdFusion や DB 側でのタイムアウト時間などによっては、何も結果が可返らなかったり、エラーが出ることで意図しない結果が要求元に返ってしまうケースも考えられますので、エラー処理が無い場合はその辺も検証された方が良いと思います。 |
|
(1) 2 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |