トップ回答者
ftp.exeを多重起動してはいけないのでしょうか?

質問
-
いつもお世話になっております。
最近、以下の事象が発生しており、困っております。
Windowsのftp.exeは多重起動してはいけないものなのでしょうか?PORTコマンドにてFTPサーバに通知しているFTPクライアントポートが
処理中に入れ替わってしまうようです。そんなことあるのでしょうか。
どなたか技術情報をお持ちでないでしょうか。
■FTPの環境
FTPクライアント:Windows Server 2008 R2
FTPサーバ:Solaris 10 ...PORTモードで20,21番ポートを使用
■現象
バッチにて、同じFTPクライアントから、同じ時間に、
同じFTPサーバへ、同じユーザを使用して
FTPコマンド(MGET)を同時実行しています。このバッチは毎日毎時1回ずつ
ジョブから定期実行されています。過去2か月間の約1440回の実績のうち、
4回ほど障害が発生しております。障害内容は以下のとおりです。
バッチAとバッチBが実行される。
↓
バッチAのプロンプト・・・バッチBで実行したMGETの結果が返ってくる(下記バッチAログの★部分)
バッチBのプロンプト・・・何も返ってこない最終的にバッチAもバッチBも対象のファイルが取得できず
エラーとなります。なお、FTPサーバ側となるSolarisのログに
FTPデーモンのログが出力されるのですが
以下の事象と同様に、MGETのタイミングで
プロセスIDが、バッチAとバッチBで入れ替わります。FTPクライアント側となるWindowsからSolarisへ
PORTコマンドにて通知しているFTPクライアントポートが
AとBで入れ替わってしまっているように見えます。--------------------------------------------------------------------------------
バッチAのログ
--------------------------------------------------------------------------------
ftp> open hostname
220 HOSTNAME FTP server ready.
331 Password required for userftp.
230 User userftp logged in.ftp> ftp> lcd D:\aaaFol
cd /var/data/aaaFol
250 CWD command successful.ftp> ls -l
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
合計 8-rwxrwxrwx 1 root sys 3987 11月 6日 01:50 aaa.txt
226 Transfer complete.
ftp> 0.0118.20bin
200 Type set to I.
ftp> ftp> prompt
mget aaa.*
200 Type set to I.
200 PORT command successful.
550 bbb.txt: No such file or directory. (★)ftp> bye
221-You have transferred 0 bytes in 0 files.
221-Total traffic for this session was 737 bytes in 1 transfers.
221-Thank you for using the FTP service on HOSTNAME.
221 Goodbye.
--------------------------------------------------------------------------------
バッチBのログ
--------------------------------------------------------------------------------
ftp> open hostname
220 HOSTNAME FTP server ready.
331 Password required for userftp.
230 User userftp logged in.ftp> ftp> lcd D:\bbbFol
cd /var/data/bbbFol
250 CWD command successful.ftp> ls -l
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
合計 2-rwxrwxrwx 1 root sys 53 11月 6日 01:50 bbb.txt
226 Transfer complete.
ftp> 0.0022.75bin
200 Type set to I.
ftp> ftp> prompt
mget bbb.*
200 Type set to I.
ftp> bye
221-You have transferred 0 bytes in 0 files.
221-Total traffic for this session was 714 bytes in 2 transfers.
221-Thank you for using the FTP service on HOSTNAME.
221 Goodbye.
--------------------------------------------------------------------------------
回答
-
チャブーンです。
この件あくまで想定ですが、FTP commandのmget時に排他がかかることで、他のftp.exeからファイルやディレクトリが見えなくなり、結果このようなエラーが出ているようにも思えます。
ftp.exeは大昔からあるWindowsのクライアントアプリケーションで、バッチ等による同時起動/同時アクセスは想定していないように思えます(サポート外とかいう話しではなく、そもそも想定されていないのでどんな動作になるのか考慮されていない)。
ftp.exeが複数プロセスの同時利用に対応しているか、はMS有償サポートに聞いていただくしかわからないと思いますが、挙動から当座、排他を意識した動作(同一ディレクトリへの同時mgetは避ける)ようなつくりをおこなうべきかと思われます。
追記:solaris側でのログ結果を示していただいていますが、状況からおっしゃるような仮説は現状考えにくいため、ひとまずsolaris側の考慮は除いてコメントしています。
フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
- 編集済み チャブーンMVP, Moderator 2015年11月9日 3:43
- 回答の候補に設定 佐伯玲 2015年11月11日 1:53
- 回答としてマーク 佐伯玲 2015年11月25日 2:33
すべての返信
-
チャブーンです。
この件あくまで想定ですが、FTP commandのmget時に排他がかかることで、他のftp.exeからファイルやディレクトリが見えなくなり、結果このようなエラーが出ているようにも思えます。
ftp.exeは大昔からあるWindowsのクライアントアプリケーションで、バッチ等による同時起動/同時アクセスは想定していないように思えます(サポート外とかいう話しではなく、そもそも想定されていないのでどんな動作になるのか考慮されていない)。
ftp.exeが複数プロセスの同時利用に対応しているか、はMS有償サポートに聞いていただくしかわからないと思いますが、挙動から当座、排他を意識した動作(同一ディレクトリへの同時mgetは避ける)ようなつくりをおこなうべきかと思われます。
追記:solaris側でのログ結果を示していただいていますが、状況からおっしゃるような仮説は現状考えにくいため、ひとまずsolaris側の考慮は除いてコメントしています。
フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
- 編集済み チャブーンMVP, Moderator 2015年11月9日 3:43
- 回答の候補に設定 佐伯玲 2015年11月11日 1:53
- 回答としてマーク 佐伯玲 2015年11月25日 2:33