|
はじめまして、sekiと申します。 ftpに関しまして、分からない事があり質問させて頂きます。 どなたかご存知の方おられましたら、ご教示をお願い致します。 【環境】 ・Solaris8 ・in.ftpdを使用 【問題】 ・バッチ処理にて、バーチャルIPでftpを行い、他ホストに作成された ファイルを取得する。 ネットワーク障害時や他ホストdown時、バーチャルIPが見えなくなる場合、 ftpのconnect:接続の時間切れとなるが、その場合約4分も待たされる。 【知りたい事】 ・上記のような障害時、1ノードで約4分も待たされるのは長いので、設定で 短く出来るのであれば短くしたい。 【検証】 1 OSパラメータのtcp_time_wait_interval=240000(4分)になっていたので、 ftpがconnect_timeoutになるのは、上位のTCPのタイマーに引っかかるのでは と思い、nddコマンドにて60000(1分)にしてinetdデーモンを、kill -HUPした。 変更後、バーチャルIPが見えないHostに対しftpを行なったが、以前4分で ftp_connect:接続の時間切れとなる。 2 /etc/inet/inetd.confの、ftp記述部分を下記のように-tオプションにて タイムアウトを設定し、inetdデーモンを、kill -HUPした。 こちらも変更後、バーチャルIPが見えないHostに対しftpを行なったが、 以前4分でftp_connect:接続の時間切れとなった。 ftp stream tcp6 nowait root /usr/sbin/in.ftpd in.ftpd -t20 -l -d ※ 下記のURLを参考にさせて頂きましたが、FTPクライアントがFTP サーバに PORTコマンドを投げて応答なしで、データ用コネクションも張れない場合は どこの設定でクライアントはtimeoutを判断するのでしょうか? 私の推測のようにTCPに依存するものなのでしょうか? http://x68000.q-e-d.net/~68user/net/ftp-1.html |
|
>>4215 seki > tcp_time_wait_interval=240000(4分)になっていたので、 tcp_time_wait_intrval は TIME_WAIT な時間を設定するものなので、 関係ありません。 http://docs.sun.com/app/docs/doc/816-0607/6m735r5ga?a=view > ftp stream tcp6 nowait root /usr/sbin/in.ftpd in.ftpd -t20 -l -d タイムアウト設定をしたいのは ftp であり、ftpd ではないので 関係ありません。そもそもネットワーク障害や他ホストが down して いるのであれば、ftpd まで行き着いていません。 今回設定したいのは、 http://X68000.q-e-d.net/~68user/net/tcp-connect-1.html における connect のタイムアウト時間と思われますが、OS の設定で 変更できるかどうかは知りません。ただし、普通は OS の設定は変更 しません。たとえば今後、 - FTP 接続だけは 10秒でタイムアウトさせたい - それ以外のプログラムでは 4分待たせたい というときにどうしようもなくなるからです。 対策としては、 - ftp に -T [タイムアウト秒数] オプションを付ける (試していませんが) - ftp の前に ping してみる (タイムアウト秒数を指定) - 監視用プロセスをたて、一定時間反応がなければ ftp を kill する てな感じでしょうか。 |