タイガー!タイガー!じれったいぞー!(SE編)

AS400, Java, JavaEE, JSF等の開発、習慣など。日々の気づきをまとめたブログ(備忘録)

【AS400】FTPのセッション・タイムアウト時間を変更する

先日、仮想テープでの日次バックアップ化を進めた中で、発生したトラブルをまとめておきたいと思います。

AS400のIFS上には、仮想テープへの保管により、複数の仮想テープ・ボリュームを作成することになり、それら仮想テープ・ボリュームをFTPで別サイトへ保管しようとしたとき、2つ目のSTMFファイルが保管されていないことを発見しました!

保管命令を指示したFTPコマンド(実際はbatファイルとして起動)は、下記の通りです。

open AS400 HostName(or IP Address)
userID
password
bin
get /TAPEIMAGE/VOL001 D:\Shares\backup\as400\VOL001.stmf
get /TAPEIMAGE/VOL002 D:\Shares\backup\as400\VOL002.stmf
quit

別ファイルにログを書き出していたので確認してみると、「接続されていません。」という。。。

ftp> get /TAPEIMAGE/VOL002 D:\Shares\backup\as400\VOL002.stmf
接続されていません。    <<<<<<<<<<

なぜか? 

すぐに、謎は解けました。

ただ単に、1本目のGET命令実行中に、ログインしていたFTPセッションがタイムアウトになっていただけでした(汗)。

あらためて、CHGFTPA コマンドを入力し、F4キー打鍵で、AS400FTP属性の設定情報を確認してみると、デフォルトのタイムアウト時間は「5分(300秒)」であることを確認できました。

                            FTP 属性の変更  (CHGFTPA)                           
                                                                                
  選択項目を入力して,実行キーを押してください。                                
                                                                                
  自動開始サーバー  . . . . . . .   *YES          *SAME, *YES, *NO              
  初期サーバー数  . . . . . . . .   3             1-20, *SAME, *DFT             
  非活動タイムアウト  . . . . . .   300           0-2147483, *SAME, *DFT   <<<<<<<<<<
  コード化文字セット ID . . . . .   00819         1-65533, *SAME, *DFT          
  発信 EBCDIC/ASCII テーブル :                                                  
    発信 EBCDIC/ASCII テーブル      *CCSID         名前 , *SAME, *CCSID, *DFT   
      ライブラリー  . . . . . . .                  名前 , *LIBL, *CURLIB        
  受信 ASCII/EBCDIC テーブル :                                                  
    受信 ASCII/EBCDIC テーブル      *CCSID         名前 , *SAME, *CCSID, *DFT   
      ライブラリー  . . . . . . .                  名前 , *LIBL, *CURLIB        
  初期名の形式  . . . . . . . . .   *LIB          *SAME, *LIB, *PATH            
  初期ディレクトリー  . . . . . .   *CURLIB       *SAME, *CURLIB, *HOMEDIR      
  初期リストの形式  . . . . . . .   *DFT          *SAME, *DFT, *UNIX            
  新規ファイル CCSID  . . . . . .   *CALC         1-65533, *SAME, *CALC...      
  サブシステム記述  . . . . . . .   QSYSWRK        名前 , *SAME, *DFT           
    ライブラリー  . . . . . . . .     QSYS         名前                         
                                                                       続く ... 
 F3= 終了    F4=プロンプト   F5= 最新表示    F12= 取り消し                         
 F13= この画面の使用法                    F24= キーの続き   

この非活動タイムアウト(INACTTIMO)を仮想テープボリュームが保存にかかる時間以上(ボリュームは増加していくので、かかる時間も増えていくので)の値に設定しました。
ちなみに、設定値は90分(5400秒) 。

この辺は、同時アクセスはどの程度あるのかを事前に確認しておく必要がありそうです。
FTPを使用するアプリ、ユーザーを確認したうえでのチューニングとなります。

FTPの設定を変更したので、FTPサービスを再起動します。SERVERパラメータに「FTP」を指定することを忘れずに・・・。

ENDTCPSVR SERVER(*FTP)
STRTCPSVR SERVER(*FTP)

さあ、再度FTPをトライ!

FTPログを確認してみると、「CONNECTION WILL CLOSE IF IDLE MORE THAN 90 MINUTES」となっています。

ftp> open as400.hogehode.co.jp
as400.hogehode.co.jp に接続しました。
220-QTCP AT 192.168.1.10.
220 CONNECTION WILL CLOSE IF IDLE MORE THAN 90 MINUTES.   <<<<<<<<<<
:

結果、連続したGET命令が、どちらも成功です!

FTPは、20ポート(データコネクション:データの受け渡し処理)と21ポート(制御コネクション:指示、命令)で動作するという、原理・原則を理解することが大切ということですね。

mechalog.com

エラーの度に、僕らは強くなっていく。
引き続き、スキル・アップあるのみです!!!