ローデンの独り言 ver 6.1
ローデンの独り言 https://rouden.jp
クリックでログアウト アクセスカウンター
Loading... try later!
RSSフィード
Pmx2Fbx Web 開発秘話その5
Unityとか3Dとか
こんにちはヾ(・ω・。)ノタ-!!!

サイトのアクセスがちょっと増えて、にっこりしているローデンです。



そういえば、このサイトは「ローデンの独り言 ver 6.1」となっていますが、ver 2.0に相当する頃(2003年頃)が最盛期で、35人/日 (ユニークユーザのみカウント) ぐらいアクセスがありました。

"最盛期でそれだけって、今のご時世どれだけ少ないのよ!ってか、そんな昔からあったの?!"

…というツッコミは置いといて、その記録も近いうちに更新されるかもしれませんね。



さて、第五弾となる今回はいつもの「工夫」とか「苦労」というより、ただの昔話です。

Pmx2Fbx Web のオリジナルのanydream/Pmx2Fbxは exe 形式のWindowsアプリケーションです。

Pmx2Fbx Web も、大雑把に言えばオリジナルのアレンジなので、その仕組みは同じになっています。ただ、Webアプリなので、exe を実行するのはユーザーではなくサーバー (rouden.jpを動かしてるコンピュータ) になっています。

そこで問題になるのが、複数のユーザが同時(全く同じタイミングに)アクセスしたときに、どうするか……ということでした。

v0.1 の時はその辺りがすごくいい加減で、同時アクセスがあったときは片方がエラーで失敗するようになっていました。不親切な動作ですが、そもそもアクセス数が少なかった(今も少ない)ので、実際は問題にはなりませんでした。

v0.3 の頃にはもう少し"マシ"な仕組みとして、同時アクセスのときは、順番待ちになるようにしました。サーバはリクエストの順番でfbxを生成するので、同時アクセスのユーザで順番待ちしてるときは、サーバの処理に時間がかかったように見えます。

この方法は欠点があって、サーバ内部で実行する "exeのPmx2Fbx" にバグがあって終了しなかったときに、順番待ちのユーザが永遠に待たされ続ける可能性があります。なので、この内部処理が30秒経っても終了しない場合は、バグと判断してエラーにするようにしていました。いわゆる タイムアウト というやつです。

これで完璧…と思いきや、この"30秒"がバグの原因になっていました。

勘の良い方は気づいているかもしれません。この仕組では、すごく大きなpmxで処理に時間がかかって30秒経過した場合、エラーになってfbxを出力できません……!

ということで、v0.5 では順番待ちシステムを廃止し、同時アクセス時は "exeのPmx2Fbx" を同時に実行できるように変更することになりました。
 
といった感じで、v0.5にしてようやく同時アクセス問題は解決できたのでした。

たぶん続く!
Pmx2Fbx Web 開発秘話その4 | 記事一覧 | VRChat and Beyond

最終更新: 2023/05/07 16:49
Message
これはエラーメッセージのテストです。長いメッセージが表示されるとどうなるでしょうか。
 OK