- - PR -
クライアント側のタイムアウトについて
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-08-08 17:48
お疲れ様です。 いつもお世話になっております。 vb.net2003にてクライアント&サーバアプリケーションを開発しております。 さっそくの質問なのですが、 現在、クライアント側アプリから、DB参照、更新等の処理を実行する為、 サーバ側アプリを呼び出して処理をしております。 そこで、稀にサーバ側での処理にて時間がかかり過ぎて、クライアント側でタイムアウトが発生してしまいます。 クライアントでタイムアウトが発生していても、サーバ側は処理はまだ実行中ですので。クライアント側、タイムアウト直後に再度サーバ処理が実行されようとすると エラーになります。(前回の処理がまだ実行中の為・・・) こういった現象を防ぐには一般的にどういった手法がとられるのでしょうか? 経験&知識が少なく困っております。 どうかご教授願えませんでしょうか? @サーバ側でクライアントとの接続が切れたと判断出来る? Aクライアント側タイムアウト時間を延ばすべき? Bその他の手法がある? ※多少、アプリの作りにも問題があるとは思いますが、 他人PGの為触れたくありません・・・。 よろしくお願いいたします。 | ||||||||
|
投稿日時: 2006-08-08 19:41
「アプリ」と言っているのはクライアントなのか、サーバなのか、 はたまた、この「システム」全体をさしているのか、によって とれる手段の選択範囲が異なると思うのですが。 # すべてだったらそもそもなんにもできませんよねぇ。
一つ目の場合、そのようにサーバ側から定期的にクライアントへの通信を 行うなどの「仕組み」ができているのであれば可能かもしれませんね。 できてないので作りたい、ということであれば、どのように実装するか いくらでもやりようは有ると思いますが。もちろんそのためにある意味 余計な通信が必要になるため、「負荷」がかかる事になるかとおもいますが。 二つ目の場合、単純にタイムアウトを延ばせば対応は可能なのでしょう。 それがシステムの「ポリシー」に違反しなければ。 その他の手法など、考えればいくらでもあるとおもいますけど。 自分自身で思いつかないのであれば、チームの中でミーティングを するなどして案を出し合ってみてはいかがですか? | ||||||||
|
投稿日時: 2006-08-08 23:38
む・・・多少の問題じゃないと思う。
それって、これだけしか読んでいない人にとっては、「本当に C/S システム?」と疑いたい。 例えば、Web アプリケーションって、C/S システムですよね?そこで、クライアントが勝手にサーバへリクエストを再投すると、サーバはエラーを返しますか?ちゃんと処理してくれますよね。 このシステム、C/S なんだから複数のクライアントがあると思いますが、本当に複数のクライアントのリクエストを、同時に処理してくれます? で、本題ですが、長時間かかっていたら何らかの支障があると判断するから、タイムアウトさせているわけですよね?だったら、タイムアウトすることを前提に作っておくべきだったのではないですか?(サーバに支障があると判断したからタイムアウトしたわけで、だったら再投できるのがおかしい) で、ここを、対症療法的に処置すると、システムが破綻してきます。 まず、どうあるべきかをきちんと決め、その上で対応してください。 | ||||||||
|
投稿日時: 2006-08-09 09:03
皆様、さっそくのご返答ありがとうございます。 どうやら、ゆくゆく調べてみますと、サーバからHTMLが返却されていたので、 どうやらIISでタイムアウトが起こっているような気がします。 みなさんのおっしゃる通り、安易に考えすぎていたと思います。 原因の追求も含め、もう少しPJ内で検討いたします。 知識&経験が乏しく質問に矛盾していた点もあったとは思いますが、 対応していただき、ありがとうございました。 | ||||||||
|
投稿日時: 2006-08-09 09:38
想像ですが、データベースサーバーの応答時間がタイムアウトになっているということだと思うので問題は一緒ではないでしょうか? 手を加えたくないというお気持ちもわかるのですが、一般的にどのような対処をするかというとSQLをチューニングするとか、インデックスの設定を再検討するなどによってタイムアウトを防ぐごとを検討することが、やはり一般的なんだと思います。 単にタイムアウトの時間を長くしたがる方がいらっしゃいますが、これは付け焼刃的な対処で再発する危険性が残ることが往々にしてあります。 | ||||||||
|
投稿日時: 2006-08-09 09:45
さっそくの返信ありがとうございます。
やはりそうですか。 こちらでも問題のPGでやっている処理を見直してみたのですが、 あまりにひどく、手直ししてもらうことになりました。。。 (SQLをかなりの回数発行していたりで・・・。) あと、原因もこちらの検討違いで、サーバはタイムアウトになっても きっちり処理をしてくれています。 (タイムアウトになれば、処理を中断し、「タイムアウトになりました」といった、エラーをクライアント側へきっちり返却してくれている。) ご迷惑をお掛けしました・・。ありがとうございました。 | ||||||||
|
投稿日時: 2006-08-09 10:07
>SQLをかなりの回数発行していたりで・・・。
単純なSQLを投げて、その結果をアプリで処理して、また単純なSQLを投げて…っていうパターンですかね。 SQL使いが一人いれば終わりそうに思えますね…お疲れ様です。 |
1