LRTKレフィクシア株式会社

点群OBJアップロードで「413」になる原因4選|容量上限を見直す

点群OBJアップロードで413が出る意味

点群OBJをアップロードしようとしたときに「413」と表示される場合、送信したデータの容量が、通信経路上に設定されている上限を超えている可能性があります。HTTPの413は、サーバーが受け取ろうとしたリクエストの内容が大きすぎると判断したときに返される応答です。

画面上では単に「アップロードに失敗しました」「413エラーが発生しました」としか表示されないこともあります。しかし、実際には点群データを保存する処理まで到達しておらず、その前段階で通信が拒否されているケースが少なくありません。

点群OBJは、一般的な文書や写真よりも容量が大きくなりやすいデータです。OBJファイルには頂点座標、法線、面、テクスチャ座標などが文字列として記録されます。点数や面数が増えるほど行数が増え、数百MBから数GB規模になることもあります。

さらに、アップロード対象がOBJファイルだけとは限りません。マテリアル情報を記録したMTLファイルや、複数のテクスチャ画像を一緒に送信する場合、送信全体の容量はOBJ単体より大きくなります。アップロード画面で複数ファイルを選択している場合は、それらの合計容量に通信上の付加情報が加わった値が判定対象になることがあります。

重要なのは、413が発生したからといって、アップロード先の保存領域が不足しているとは限らない点です。保存先に十分な空き容量があっても、Webサーバー、リバースプロキシ、アプリケーション、中継サービスなどに設定された1回当たりの受信上限を超えれば、413になる可能性があります。

そのため、点群 OBJ アップロードで413が出た場合は、単純に端末の空き容量を増やすのではなく、どの通信層がリクエストを拒否しているのかを切り分ける必要があります。上限値を一か所だけ変更しても、別の層により小さい上限が残っていれば問題は解消しません。

413とほかのアップロードエラーの違い

413への対処を始める前に、似たようなアップロード失敗と区別しておくことが大切です。エラーの種類を誤認すると、容量上限を変更しても改善せず、原因調査に時間がかかります。

413は、基本的に送信するリクエストの容量に関係する応答です。アップロード開始直後に失敗する場合や、特定の容量を超えたファイルだけが毎回失敗する場合は、上限設定が原因である可能性が高くなります。

一方、アップロードが一定時間進んだ後に止まる場合は、通信時間の上限や接続切断も考えられます。大容量ファイルは送信完了までに時間がかかるため、タイムアウト設定が短いと、容量そのものが上限以内でも失敗することがあります。この場合、413ではなく別の応答になることがありますが、画面側で詳細が省略されていると、利用者からは同じアップロード失敗に見えます。

認証情報の期限切れやアクセス権限の不足でも、ファイルは送信できません。ログイン後に長時間作業し、アップロード開始時点で認証が失効していた場合は、容量を小さくしても失敗します。特定の利用者だけがアップロードできない場合は、権限や認証状態も確認する必要があります。

ファイル形式の解析に失敗した場合も、アップロードエラーとして表示されることがあります。OBJ内の頂点参照が不正である、数値として解釈できない文字が含まれる、関連ファイルの参照先が見つからないといった問題は、通常、データ受信後の解析工程で発生します。アップロード自体は完了しているため、413とは発生段階が異なります。

また、保存先の空き容量が不足している場合は、受信途中または保存処理で失敗する可能性があります。413はリクエストを受け入れる前後の容量判定で返されることが多いため、ストレージ不足とは分けて調査します。

切り分けの目安として、同じファイルを小さく分割すると成功する、一定容量未満のファイルは成功する、アップロード開始直後に毎回失敗するという特徴がそろっている場合は、まずリクエスト容量の上限を疑います。ただし、画面に表示された番号だけで断定せず、サーバー側のアクセス記録やアプリケーション記録を確認することが確実です。

原因1 Webサーバーやリバースプロキシの容量上限

点群OBJアップロードで413が発生する代表的な原因は、Webサーバーやリバースプロキシに設定されたリクエスト容量の上限です。

利用者のブラウザから送信されたデータは、必ずしも直接アプリケーションに届くわけではありません。一般的な構成では、外部からの通信を最初に受け付けるWebサーバーやリバースプロキシがあり、その後ろでアップロード処理を行うアプリケーションが動作しています。

前段のサーバーには、過大な通信による負荷や不正利用を抑えるため、1回のリクエストとして受け取れる最大容量が設定されていることがあります。点群OBJ一式の容量がその値を超えると、アプリケーションへ転送される前に拒否され、413が返されます。

この状態では、アプリケーション側の処理記録にアップロード開始の履歴が残らない場合があります。アプリケーションの記録だけを調べても原因が見つからず、利用者側では何度試しても同じ結果になります。

確認すべきなのは、外部通信を最初に受け取る層の設定です。Webサーバーとリバースプロキシが別々に存在する場合は、それぞれに容量上限が設定されている可能性があります。公開用の入口と内部転送用の入口が分かれている構成では、複数の設定を確認しなければなりません。

例えば、外側のリバースプロキシが100MBまで、内側のWebサーバーが500MBまで、アプリケーションが1GBまで受信できる設定だった場合、実際に利用できる上限は100MB付近になります。後段の値を増やしても、最初の100MB制限を変更しなければ413は解消しません。

容量上限を変更した後は、設定ファイルを書き換えるだけでなく、対象プロセスへの反映が必要です。設定の再読み込みや再起動が必要な環境もあります。変更後も同じ上限で失敗する場合は、設定の反映先が正しいか、別のサーバーに接続していないかを確認します。

複数台のサーバーへ通信を振り分けている構成では、全台の設定を統一することも重要です。一部のサーバーだけ上限が小さいと、同じファイルが成功したり失敗したりする不安定な状態になります。試行ごとに結果が変わる場合は、振り分け先ごとの差異も疑う必要があります。

上限を大きくすれば必ず安全になるわけではありません。無制限に近い設定にすると、過大なリクエストによってメモリ、ディスク、通信帯域が消費されやすくなります。実際に扱う点群OBJの容量、同時アップロード数、サーバー資源を確認し、必要な範囲で上限を設定することが大切です。

原因2 アプリケーション側のリクエスト容量上限

Webサーバーを通過しても、アップロード処理を行うアプリケーション側で容量超過と判定されることがあります。これが2つ目の主な原因です。

アプリケーションには、受信できるリクエスト全体の上限、ファイル1個当たりの上限、複数ファイルの合計上限などが設定されている場合があります。さらに、ファイルを受け取る部品、入力内容を検証する処理、データを一時保存する処理が、それぞれ別の上限を持っていることもあります。

点群OBJのアップロードでは、OBJ、MTL、テクスチャ画像をまとめて送る構成がよくあります。このとき、OBJ単体は上限以内でも、関連ファイルを含む合計容量が上限を超えれば失敗します。

例えば、OBJが700MB、MTLが数MB、テクスチャ画像の合計が400MBの場合、ファイルごとの上限が800MBでも、リクエスト全体の上限が1GBであれば超過する可能性があります。管理画面に表示されている「最大800MB」という説明がファイル単体を指すのか、送信全体を指すのかも確認が必要です。

アプリケーション側では、受信したファイルをメモリ上に保持する方式と、一時ファイルとしてディスクへ書き出す方式があります。大容量の点群OBJをすべてメモリに保持する設計では、同時アップロードが重なったときにメモリ不足が起こりやすくなります。そのため、安全のために比較的小さな上限が設定されていることがあります。

設定値を引き上げる場合は、容量だけでなく処理方式も確認します。上限を数GBへ変更しても、受信データを全量メモリに展開する実装のままでは、サーバーが不安定になる可能性があります。大きなデータは一定量ずつ読み込み、一時領域や保存先へ順次書き込む方式が適しています。

また、アプリケーションが独自に413を返していることもあります。ファイル形式や契約条件に応じて容量制限を設け、上限超過時に413を返す設計です。この場合、Webサーバーの設定を変更しても改善しません。アプリケーションの設定値、利用者区分、プロジェクト単位の制限を確認する必要があります。

アップロード画面の表示とサーバー設定が一致していないケースにも注意が必要です。画面には1GBまでと書かれていても、実際のアプリケーション設定が500MBのままなら、利用者は原因を判断できません。容量上限を変更したときは、画面上の案内、入力検証、サーバー側判定を同じ値にそろえます。

413を分かりやすく案内することも重要です。「アップロードに失敗しました」だけではなく、許容容量、送信した容量、分割や軽量化の方法を画面に表示できれば、利用者が同じ操作を繰り返すことを防げます。

原因3 中継基盤やセキュリティ層の容量上限

3つ目の原因は、Webサーバーより前に置かれている中継基盤やセキュリティ層の制限です。

外部公開されているアップロードサービスでは、通信の振り分け、暗号化、負荷分散、攻撃対策などを目的として、複数の中継層を経由することがあります。代表的なものとして、負荷分散装置、通信配信基盤、Webアプリケーション防御機能、APIの中継基盤などがあります。

これらの層にリクエスト容量の上限があると、社内のWebサーバーやアプリケーションを変更しても413は解消しません。管理者がアプリケーションの上限を2GBに変更したにもかかわらず、外部からは200MBを超えるファイルが送れないという場合は、中継層の制限を確認します。

中継基盤の上限には、利用者が変更できるものと、サービス仕様として固定されているものがあります。固定上限を超える点群OBJを扱う場合は、通常のWebリクエストでファイル全体を送る方式自体を見直さなければならないことがあります。

また、セキュリティ機能が大容量リクエストを異常通信と判断する場合もあります。ファイル容量、送信時間、通信回数、送信元などの条件によって遮断されると、単純な容量上限と似た症状になります。

特定のネットワークからだけ失敗する、社内環境では成功するが外部環境では失敗する、同じ容量でも時間帯によって結果が変わるといった場合は、中継経路やセキュリティ判定の違いを確認します。

中継層を調査するときは、ブラウザから最終保存先までの経路を図にして整理すると分かりやすくなります。どの層が通信を受け取り、どこへ転送し、各層にどの上限があるのかを明確にします。

容量上限を管理する担当者が異なる場合にも注意が必要です。アプリケーション担当者、インフラ担当者、セキュリティ担当者が別々に設定を管理していると、全体の最小値が共有されていないことがあります。点群OBJの標準容量と最大容量を関係者間で共有し、経路全体の設定を確認する必要があります。

中継基盤の制限を変更できない場合は、ファイルを複数の小さな単位に分割して送信する方式や、アップロード専用の保存先へ直接送信する方式が候補になります。ただし、ブラウザ側だけでファイルを分割しても、サーバー側に再結合処理がなければ利用できません。送信側と受信側を一体として設計することが重要です。

原因4 OBJ一式の構成と送信方法による容量超過

4つ目の原因は、利用者が認識しているファイル容量と、サーバーが判定するリクエスト容量が一致していないことです。

アップロード画面で700MBのOBJを選択したため、1GBの上限には余裕があると判断していても、実際の送信容量が700MBちょうどになるとは限りません。ファイルをフォーム形式で送信する場合、ファイル名、項目名、区切り情報などの付加データが含まれます。

通常、この付加情報だけで容量が大幅に増えるわけではありません。しかし、上限値に近いファイルでは、わずかな差で制限を超える可能性があります。そのため、最大容量を1GBと案内する場合に、1GB近いファイルが常に安全に送れるとは限りません。

複数ファイルをまとめてアップロードする場合は、選択した全ファイルの合計が対象になります。OBJに関連するMTLやテクスチャ画像の存在を見落とすと、想定より送信容量が大きくなります。

圧縮ファイルにまとめて送信する方式でも注意が必要です。通信時の判定が圧縮後の容量に対して行われる場合、送信自体は上限以内に収まることがあります。しかし、サーバー側で展開した後の容量には別の制限が設けられている可能性があります。

圧縮率はデータ内容によって変わります。文字情報が中心のOBJは小さくなることがありますが、すでに圧縮された形式のテクスチャ画像は、まとめても大きく減らない場合があります。圧縮すれば必ず上限以内になるとは限りません。

また、OBJの書き出し設定によっても容量は変わります。必要以上に細かい点や面を保持している、座標値の小数桁が過剰に多い、使用していない法線やテクスチャ座標が大量に含まれている場合、ファイルが大きくなります。

同じ形状を表す場合でも、点密度、面の分割数、記録する属性、数値の桁数によって容量は変化します。ただし、容量を減らすために点や面を削減すると、形状精度や計測結果へ影響する可能性があります。見た目だけで削減量を決めず、利用目的に必要な精度を確認することが大切です。

点群として利用するにもかかわらず、非常に多くの面情報や重複した頂点が含まれている場合は、出力工程を見直す余地があります。反対に、面を使った表示やテクスチャ表現が必要な場合は、単純に面情報を削除できません。

容量超過を防ぐには、OBJ単体の容量だけでなく、アップロード対象一式の合計、通信時の形式、展開後の容量まで確認します。利用者向け画面にも「OBJファイル1個の上限」なのか「関連ファイルを含む1回の送信上限」なのかを明示する必要があります。

413が発生している場所を調査する手順

413を解消するには、最初にエラーを返している層を特定します。すべての上限を同時に変更すると、原因が分からないまま不要な設定緩和を行うことになるため、順番に確認します。

まず、失敗する容量の境界を調べます。同じ構成のデータを容量別に用意し、どこまで成功するかを確認します。100MBは成功し、200MBは失敗するというように境界が明確であれば、固定された容量上限が存在する可能性が高くなります。

次に、ブラウザの通信記録を確認します。アップロード要求に対して実際に413が返っているか、どのURLへの送信で失敗しているか、応答本文に説明が含まれているかを確認します。画面上のメッセージだけでは、内部エラーを一律に413として表示している可能性もあるためです。

続いて、最も外側にあるサーバーや中継基盤のアクセス記録を確認します。413が記録されており、後段への転送記録がなければ、その層で拒否されている可能性があります。

外側の層に413の記録がなく、アプリケーションまで要求が届いている場合は、アプリケーションの記録を確認します。容量判定、一時保存、入力検証のどこで失敗しているかを追跡します。

複数台構成の場合は、処理したサーバーを識別できる情報も確認します。同じファイルが成功したり失敗したりする場合、サーバーごとに設定が異なる可能性があります。

テストでは、実際の運用に近い送信方法を使うことが重要です。OBJだけを送る試験で成功しても、本番でMTLやテクスチャ画像を追加すると上限を超えることがあります。単体ファイル、関連ファイル一式、圧縮ファイルなど、利用される形式ごとに確認します。

容量の境界だけでなく、送信時間も記録します。小さいファイルは成功し、大きいファイルは一定時間後に失敗する場合、容量上限ではなくタイムアウトの可能性があります。413が明確に返っているかを確認し、通信時間の問題と混同しないようにします。

調査結果は、利用者のブラウザ、外部中継層、Webサーバー、アプリケーション、保存先という順序で整理すると分かりやすくなります。各層の上限値、記録の有無、担当者を一覧化すれば、今後の設定変更にも利用できます。

容量上限を見直すときの考え方

413を解消するために容量上限を引き上げる場合、現在失敗しているファイルだけを基準に設定するのではなく、将来のデータ増加とサーバー負荷を考慮します。

最初に、現場で扱う点群OBJの容量分布を確認します。平均的な容量、通常運用で想定する最大容量、例外的に発生する最大容量を分けて整理します。

ほとんどのデータが300MB以下で、年に数回だけ数GBのデータが発生する場合、すべての通常アップロードを数GB対応にすることが最適とは限りません。大容量データ専用の送信方法を設ける方が、セキュリティと運用性を両立できることがあります。

上限値には余裕を持たせます。関連ファイルの追加や通信時の付加情報を考慮し、想定する最大ファイル容量と上限値を完全に同じにしないことが大切です。

ただし、必要以上に大きな値を設定すると、同時アップロード時の負荷が増えます。1件のアップロードが2GBで、同時に10件処理されれば、通信量や一時保存領域への負荷は大きくなります。受信処理がメモリを使用する設計では、さらに注意が必要です。

一時保存先の容量も確認します。最終保存先に十分な空きがあっても、アップロード中に使用する一時領域が小さければ処理できません。圧縮ファイルを展開する場合は、圧縮前より大きな作業領域が必要になることがあります。

アップロード後に変換処理を行う場合は、その処理で生成される中間ファイルも考慮します。OBJの解析、点群の分割、表示用データの生成などにより、元ファイルの数倍の空き容量が必要になる場合があります。

容量上限、同時実行数、一時保存容量、処理時間の上限は相互に関係します。413だけを解消しても、その後の解析工程で失敗すれば、利用者の問題は解決しません。アップロード受付から処理完了までを一つの流れとして確認します。

セキュリティ面では、対応する拡張子、ファイル数、展開後の容量、ファイル名、保存場所を制限します。容量上限を引き上げる代わりに、無関係なファイルを受け付けない設計を徹底することが重要です。

大容量の点群OBJを安定してアップロードする実装

数百MBから数GB規模の点群OBJを扱う場合、1回のリクエストでファイル全体を送る方式には限界があります。通信が途中で切れると最初から送り直しになり、利用者とサーバーの双方に負担がかかります。

安定性を高める方法の一つが、ファイルを一定容量ごとに分割して送信する方式です。ブラウザ側でファイルを複数の小さな単位に分け、サーバー側で順番に受信して再構成します。

分割した各単位が容量上限より小さければ、1回のリクエストが413になることを避けやすくなります。ただし、サーバー側では、ファイル全体の容量、分割数、順序、重複、欠損を管理する必要があります。

途中から再開できる仕組みも有効です。通信が切れたときに、送信済みの部分を再送せず、未送信部分だけを続けられれば、大容量データのアップロード時間を抑えられます。

分割方式を採用しても、ファイル全体の上限は必要です。分割すれば無制限に送信できる状態にすると、保存領域を過度に消費されるおそれがあります。アップロード開始時に全体容量を申告し、許可された範囲内でのみ送信を受け付ける設計が適しています。

アップロード専用の保存先へ直接送信する方式もあります。通常のアプリケーションサーバーがファイル本体を中継せず、認証と送信先の発行だけを担当する構成です。大容量ファイルがアプリケーションサーバーを通過しないため、Web処理への負荷を抑えられます。

ただし、直接送信方式でも、誰でも自由に保存できる状態にしてはいけません。利用者、対象プロジェクト、許容容量、有効時間などを制限した一時的な送信権限を発行する必要があります。

送信完了後は、容量やハッシュ値を使ってファイルの完全性を確認します。ブラウザ側で送信完了と表示されても、一部のデータが欠落していればOBJを正しく解析できません。

OBJ、MTL、テクスチャ画像を別々に送信する場合は、それぞれの関連付けも管理します。ファイル名だけに依存すると、同名ファイルの上書きや参照間違いが起こる可能性があります。アップロード単位ごとに識別情報を発行し、その中で関連ファイルを管理する方法が安全です。

利用者向けには、アップロードの進捗、残り容量、送信速度、再試行状態を表示します。大容量データでは処理に時間がかかるため、画面が止まって見えると、利用者が更新や再送信を行い、重複処理の原因になります。

アップロード完了と解析完了も分けて表示します。ファイルの送信が完了しても、点群の変換や表示用データの生成には時間がかかることがあります。「送信済み」「処理中」「完了」「要確認」など、段階を明確にすることで誤操作を防げます。

利用者側で確認できる対処方法

管理者がすぐに設定を変更できない場合でも、利用者側で確認できる項目があります。

まず、アップロードしようとしているファイル一式の合計容量を確認します。OBJだけでなく、MTL、テクスチャ画像、圧縮ファイルなど、同時に選択するすべてのファイルを含めます。

次に、小さいOBJでアップロードを試します。小容量のファイルが成功し、大容量のファイルだけ失敗する場合は、容量上限の可能性が高くなります。管理者へ連絡するときは、成功した最大容量と失敗した最小容量を伝えると調査しやすくなります。

不要な関連ファイルが含まれていないかも確認します。過去のテクスチャ画像、作業用の複製、別モデルのファイルなどが同じフォルダーに残っていると、意図せず送信対象へ含めることがあります。

OBJを書き出した元データを利用できる場合は、目的に応じて点密度や面数を見直します。Web上で形状を確認するだけなのか、細部の計測に使用するのかによって、必要な精度は異なります。

ただし、容量を減らすために安易に座標を丸めたり点を削除したりすると、計測結果へ影響する可能性があります。元データを残したうえで、用途別の軽量版を作成する方法が安全です。

ファイルを圧縮して送信できる仕様の場合は、圧縮後の容量を確認します。アップロード先が圧縮ファイルに対応していない場合や、指定されたフォルダー構成がある場合は、その条件に従います。

通信が不安定な環境では、容量上限以内でも大容量ファイルの送信に失敗することがあります。安定した回線を利用し、送信中に端末を休止させたり、ブラウザを閉じたりしないようにします。

エラーを管理者へ報告するときは、発生時刻、ファイル構成、合計容量、画面に表示された番号、操作した画面、再試行結果を伝えます。個人情報や機密情報を含む点群の場合は、ファイル本体を無断で送らず、まず容量やファイル名などの情報だけを共有します。

413を再発させないための運用ルール

413を一度解消しても、点群データの高密度化やテクスチャ画像の増加によって再発する可能性があります。設定変更だけで終わらせず、容量を管理する運用を整えることが大切です。

最初に、アップロード可能な容量を利用者へ明示します。ファイル1個当たりの上限なのか、1回の送信合計なのか、圧縮後と展開後のどちらを判定するのかを説明します。

上限に近いデータを扱う場合の手順も用意します。軽量版の作成、複数データへの分割、大容量専用アップロードの利用など、現場担当者が選べる方法を決めておきます。

アップロード画面では、送信開始前にファイル容量を検査します。明らかに上限を超えている場合は、通信を開始せず、その場で案内を表示した方が効率的です。

サーバー側の判定も必ず残します。ブラウザ側の検査だけでは、設定の変更や不正な要求を防げません。画面上の検査は利用者支援、サーバー側の検査はシステム保護として役割を分けます。

容量上限を変更した履歴も管理します。変更前後の値、対象環境、変更理由、確認した最大容量を記録すれば、将来の障害調査に役立ちます。

複数環境がある場合は、開発用、検証用、本番用の設定差にも注意します。検証環境では成功した点群OBJが本番環境では413になる場合、上限値や通信経路が異なる可能性があります。本番と同等の経路を使った試験が必要です。

監視では、413の発生回数、送信容量、利用者、対象プロジェクトなどを集計します。特定の容量帯で失敗が増えている場合は、上限値が実際のデータに合わなくなっている可能性があります。

上限を引き上げる前に、点群OBJが必要以上に大きくなっていないかも確認します。書き出し設定の変更、重複データの除去、用途別データの作成によって、品質を維持しながら容量を抑えられることがあります。

反対に、業務上必要な精度を維持するために大容量化が避けられない場合は、データを無理に削減せず、アップロード基盤を大容量対応へ変更します。容量削減と基盤強化のどちらが適切かは、点群の用途、必要精度、利用頻度から判断します。

まとめ

点群OBJアップロードで413になる主な原因は、Webサーバーやリバースプロキシの上限、アプリケーション側の上限、中継基盤やセキュリティ層の上限、OBJ一式の構成と送信方法による想定外の容量超過です。

413が表示されたときは、保存領域の不足だけを疑うのではなく、利用者のブラウザから保存先までの通信経路を確認します。複数の層に容量上限がある場合、実際に送信できる容量は、その中で最も小さい値に左右されます。

上限を変更する際は、想定する最大ファイルだけでなく、関連ファイル、通信時の付加情報、同時アップロード数、一時保存容量、展開後の容量、解析処理の負荷まで考慮する必要があります。

大容量の点群OBJを継続的に扱う場合は、単純に上限値を引き上げるだけでなく、分割送信、途中再開、直接アップロード、完全性確認などを組み合わせることが有効です。

また、点群の使用目的に合わせて書き出し設定を見直し、必要な精度を維持しながら容量を適正化することも欠かせません。高精度な元データと表示用の軽量データを分けて管理すれば、アップロード時間とデータ品質を両立しやすくなります。

現場で取得する段階から点群データの容量、精度、管理方法を整理しておくと、アップロード後の手戻りを減らせます。点群の取得からクラウドでの確認までを効率化したい場合は、LRTK Phoneを活用した運用も検討できます。

現場を3Dで残して、あとから測る。
実際の画面と動画で使い方を確認できます。

LRTK Phoneの使い方・実例を見る
資料請求導入相談
現場をスマホで3DスキャンLRTK Phone実例を見る