- - PR -
FTPのログについて
1
投稿者 | 投稿内容 | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-11-30 21:22
いつもお世話になっております。
vb.netで端末から1分毎にサーバのテキストと画像をFTPで取得する処理を 作成しました。 非同期処理でWebClientを使用しています。 コード: For i As Integer = 0 To FileList.Length - 1 Webclient = New WebClient() Webclient.Credentials = New NetworkCredential(userName, password) WebClient.DownloadFileAsync(serverUri, localFilePath) Next i ですが、サーバーにあるFTPのログ(exYYMMDD.log)を見ると ログの出力間隔がまちまちで、1分毎の時もあれば3時間ログが出ていないことも あります。 ログが出ていない間はファイルダウンロードもできていません。 端末側ではファイルダウンロードの要求をサーバーに対して行っているにも かかわらず、一切ログが出ていない時間帯が発生する原因がわからず困っています。 1分毎にダウンロードするファイル数は4ファイル、ファイルサイズも画像で 100kくらいです。 またサーバーにダウンロードを要求する端末の台数は10台です。 不要なセッションが確立していないことも確認しました。 懸念事項としては、サーバーが停止する時間が一日に15分程度あり、その間も 端末側はファイルダウンロードの要求をし続けることです。 ですがテストでは、サーバー停止中は0バイトファイルを作成し、 起動後はダウンロードしたファイルに置き換わりました。 FTPのログが出力されない、またはFTPが失敗する理由や回避策について ご存知の方がいらっしゃればお教えください。 もう1点、FTPのログで #Software: Microsoft Internet Information Services 6.0 #Version: 1.0 #Date: 2007-11-21 18:57:30 #Fields: time c-ip cs-method cs-uri-stem sc-status sc-win32-status が出力されるのはどんなタイミングでしょうか? ログは一日単位にファイルを作成しています。ログファイルの先頭にあるのは なんとなくわかるのですが、その後も上記のコメントがでてきます。 このコメントの前後のログの出力時間もまちまちで6時間弱開いている ときもあります。 長々と質問してしまい、申し訳ありませんが ご教授頂ければ幸いです。 環境は下記の通りです。 端末 Windows XP Professional Version 2002 SP2 Visual Studio 2005 Professional Edition .NET Framework Version 2 使用言語 vb.net サーバー Windows Server 2003 Standerd Edition SP1 よろしくお願い致します。 [ メッセージ編集済み 編集者: みかん 編集日時 2007-11-30 21:25 ] [ メッセージ編集済み 編集者: みかん 編集日時 2007-11-30 21:25 ] [ メッセージ編集済み 編集者: みかん 編集日時 2007-11-30 21:27 ] | ||||||||||||||||||||
|
投稿日時: 2007-11-30 22:24
全般に問題の切り分けが足りない気がします。 ですので、原因がたくさん考えられます。 私はいっぺんに全ての問題点を指摘できるほど根性がないので、 とりあえず適当に思いつくままに書きます。
.Netは既定では同一Authority(≒Host)に2つまでしか接続を張りません。 残りは後に回されます。 ひとつの接続が死ぬと、キューにたまった残りもうまく動かなくなります。 ServicePointManagerあたりを調べて、4つに変更するとか、 一つ一つダウンロードするようにします。 .Netの接続=ServicePointはあまり安定していません。 サーバーやプロトコル、バージョンなどによって 反応しなくなることがあります。 既定では「二つ」とまった時点で接続が足りなくなりますので、 問題に気づかない場合があります。 毎回確実に閉じるとうまくいきます。
これは非常に問題が複雑です。 15分の間反応しないわけですが、 Socket、FtpWebRequest、WebClientはどのようにリトライするのか把握していますか? どこの層がいつ、どのようにタイムアウトしてるのかを考えると、 何パターンもあります。 SocketもFtpWebRequestもWebClientも、 何回も使っていますが、放置した場合どうなるのか 私にはよくわかりません。 とりあえず、Socketのkeepaliveは2時間とかですから、 2時間何も返事なくてもおかしくないかなとか思います。 私は一番上で10秒とかでタイムアウトを入れ、 タイムアウトの場合はServicePointをリセットしています。
必要なセッションが確立してることは確認したのでしょうか?
常識的に考えると、 ftpサーバーが起動したとき=IISが起動したときじゃないでしょうか? 日付が変わったとき、サーバーが起動したとき、 それ以外いつ記録されるのか、私は知りません。 私のところではそれ以外記録されてませんね。 つまり… サーバーが止まってるんですかね? |
1