FFFTP inner error - ”No more async regist space”

この記事は次のブログに引っ越しました。

imgimg Xreaなどの格安サーバで、FFFTPを使っていると"No more async regist space"というメッセージが表示され、アプリが落ちる(FFFTPが強制終了する)ことがあります。 また、その際に、ごくまれにですがアプリを再起動して、改めて接続しても"AskAsyncDone called with unregisterd socket."エラーが発生して同じくアプリが終了するケースも。 この現象に関して検索すると「PASV(パッシブ)モードを変更する」といった回答を見受けますが、恐らく改善されないでしょう。 一番の原因は、サーバ側からのレスポンス(反応)が遅いためで、何度も待ちを食らったアプリ側が「待ち切れなくなったから帰る!」とアプリを終了してしまうのです。 一番簡単な解決法は、安定したサーバに乗り換える事ですが、「せっかく安くすませているのに…」という方もいると思います。きちんと原因を知れば対策も見えてきてコストを安く抑えられると思うので、エラーに関する内容とレスポンスが遅くなる原因をまとめてみました。お手すきにご一読下さい。 エラーの内容を知る まずは、原因を知るためにエラーの内容を説明します。 FFFTP inner Error. No more async regist space ▼訳 FFFTP 内部エラー Asyncの登録スペースが、いっぱいになりました 1行目は"inner"つまり内部にエラーが発生したという意味で、こちらのインナー・エラーのことではありません。→エラーの例 次に、2行目のエラーメッセージにある"async"というのは"asynchronous"の略で「非同期」という意味です。 この「非同期」とは「同期されない」という意味ではなく「任意のタイミングでデータを送信する通信方式」という意味なのですが、わかりづらいですよね。 同期と非同期 ヒデキ実は、パソコンやインターネットなど、通信を行う業界では「同期」と「非同期」という言葉がよく使われます。 映画やドラマで警備員さんがトランシーバーを使って話すシーンを想像してみてください。柳沢慎吾さんの警察官のモノマネでもいいです。話す時は「つなげて→話す→切る」という動作、あれが「非同期通信」と呼ばれるものです。 では「同期」の場合はと言うと「相手にかけた電話」が同期通信になります。つまり「つながりっぱなし」状態なので「話す」だけで済むわけです。 FTPは、ファイルをアップロードする場合「サーバに接続→転送→切断」という動作を行うので「非同期」通信ということになります。 恐らく今回の、このエラーが出る際、作業中ファイルをアップロードしても、1回目でアップロードされないケースが何度か続いていたと思います。 つまり「あれ? 反映されてないぞ?アップに失敗したかな?」といったケースです。イメージとしては、トランシーバーで話しているのに反応がなく「あれ?聞こえてるのかな?」といった状態でしょうか。 その度に、ファイルのアップロード作業を繰り返すわけですが、実は再接続せずに、保留のまま別の接続を作っていることがあります。つまり、相手から反応がないので別のトランシーバーを用意してつなげていると考えて下さい。 そうなると、トランシーバーが増える=接続数が増えることになるので、もうトランシーバーがない=アプリの許容範囲を超えた時に"No more async regist space"を表示して終了するわけです。 そもそもサーバからの返事が遅い事が原因なのですが、アプリも共倒れ状態というわけです。 サーバーの反応が遅い原因 何といっても、サーバーに負荷がかかっていて、サーバーそのものが一杯一杯な場合が一番多い原因でしょう。 一般的なWEBサーバの場合は、共有サーバ型といって、1台のサーバーを複数人でシェアして使います。これによりコスト抑えられるので、安くWEBサイトを持てるわけです。 しかし、同じサーバーで他のユーザーが負荷をかけている場合、自分も、とばっちりを受けていることになります。 この場合は、管理人に言って迷惑をかけている人を何とかしてもらうか、我慢するか、別のサーバに引っ越すことになります。マンションと同じですね。 しかし、実は別の事が原因で遅くなる場合もあります。ValueDomainで独自ドメインを取得して、XreaをWEBサーバにしている方は特にあるかもしれません。 チェック事項 FTPだけでなくWEBサイトも反応が遅いか 独自ドメインの場合、エイリアス(※1)でアクセスしても遅いか FTPサーバの設定で、IPアドレスに変更してどうか(※2) ※1) ここで言うエイリアスとは、WEBサーバの契約時に独自ドメインとは別にWEBサーバー側で用意したサブ・ドメインのアドレスです。例) hogehoge.s324.xrea.com ※2) FFFTPFTPサーバを"s324.xrea.com"といったドメイン名で指定している場合、IPアドレスで接続します。 (つづく)