ページの先頭行へ戻る
Interstage Application Server V13.0.0 GlassFish 設計・構築・運用ガイド
FUJITSU Software

12.4 Webアプリケーションの開発・運用時の異常

Webアプリケーションの開発・運用時に発生する以下のトラブルについて対処方法を説明します。

JSPのコンパイルに失敗した場合

以下の可能性が考えられます。

JSPまたはJSPから静的includeされているファイルを更新しても実行時に反映されない

以下の可能性が考えられます。

以下の対処を行ってください。

エラーページとして指定したページがWebブラウザに表示されない場合

1.4.3 Webアプリケーションの注意事項」の「エラーページについて」の「Webブラウザの設定」を参照してください。


日本語などのマルチバイト文字を含むURIにアクセスすると、Webブラウザにステータスコード「404 Not Found」や「400 Bad Requestが通知される

ネットワーク設定の定義項目の「リクエストURIの解析に使用するエンコーディング(uri-encoding)」と、Webブラウザから送信されたリクエストURIのエンコードが一致しているか確認してください。また、Webブラウザがどのエンコード方式でリクエストURIをエンコードするかを確認してください。

Internet Explorer の場合

「ツール」-「インターネットオプション」-「詳細設定」-「URLパスをUTF-8として送信する」が有効な場合、リクエストURIはUTF-8で送信されます。


運用資産リストア後、Webブラウザにステータスコード「404 Not Found」が通知される

GlassFish運用資産をリストアした場合、isprintbackuprscコマンドで表示されたバックアップ対象サービスの運用資産もリストアしているか確認してください。特に、Webサーバー連携をしている場合は、Interstage HTTP Server 2.4運用資産、Webサーバーコネクタ(Interstage HTTP Server 2.4用)の運用資産のリストアを実施するようにしてください。


GlassFish Serverクラスターへの接続ができていない場合

以下の可能性があります。

以下の対処を行ってください。

Webアプリケーションからの応答がない場合

サーバーとの通信がタイムアウトしている可能性があります。

Webアプリケーションの処理が遅延しているか確認のうえ、Webアプリケーションの処理時間が想定内だった場合は、Webサーバーコネクタの送受信タイムアウトの値を増やすよう変更してください。送受信タイムアウトの変更については、WebサーバーとGlassFish Serverクラスターの連携設定に応じて以下のサブコマンドを使用してください。

送受信タイムアウトの詳細は、「6.16.1 HTTP通信」を参照してください。

WebサーバーとGlassFish Serverクラスターを別のマシンで運用する場合には、WebサーバーとGlassFish Serverクラスター間でネットワーク接続に異常がないか確認してください。

Webアプリケーションの処理に時間がかかっている場合、チューニングにより改善する場合があります。「6.4 Webコンテナのチューニング」を参照して、Webコンテナをチューニングしてください。

本エラーメッセージが慢性的に出力される場合には、GlassFish Serverインスタンスを追加したり、システム構成(ハードウェア、ソフトウェア)を見直して、負荷に対して十分なシステムを構築してください。必要であればCPUのアップグレードも検討してください。また、ログを参照し、Java VMのメモリ不足(OutOfMemoryError)が発生している場合には、「チューニングガイド」の「OpenJDK 8のチューニング」-「異常発生時の原因振り分け」-「java.lang.OutOfMemoryErrorがスローされた場合」を参照して対処してください。


DASに配備したWebアプリケーションとの通信に失敗する場合

以下の可能性があります。

以下の対処を行ってください。

Webラウザにステータスコード「400 Bad Request」が通知される

Webラウザにステータスコード「403 Forbidden」が通知される

Webコンテナが受信したリクエストの送信元が、Webコンテナに許可されていない可能性があります。

HTTPサービスの定義項目「要求を受け付けるIPアドレス」を参照し、要求を受け付けるIPアドレスの設定を確認してください。

なお、リクエストの送信元IPアドレスは、HTTPアクセスログの出力フォーマット「%webserver.name%」に出力されます。


Webラウザにステータスコード「404 Not Found」が通知される

Webラウザにステータスコード「500 Internal Server Error」が通知される

Webアプリケーションの処理に失敗している可能性があります。サーバーログにエラーが出力されていないか確認してください。

また、Webアプリケーションからの応答待ちで、サーバーとの通信がタイムアウトしている可能性があります。

Webアプリケーションの処理が遅延しているか確認のうえ、Webアプリケーションの処理時間が想定内だった場合は、Webサーバーコネクタのタイムアウト時間を増やすよう変更してください。

Webアプリケーションからの応答がない場合の詳細は、「Webアプリケーションからの応答がない場合」を参照してください。


Webブラウザにステータスコード「502 Proxy Error」が通知される

Webブラウザにステータスコード「503 Service Unavailable」が通知される

Webアプリケーションにアクセスできない

Servletのファイルアップロードで、送信するファイルが2GByteを超えると、アップロードに失敗する

送信するファイルのサイズが2GByteを超えると、ブラウザがContent-Lengthヘッダーに実際のファイルのバイト数とは異なる値を設定する場合があります。この場合、WebコンテナはIOExceptionをスローします。なお、巨大なファイルを送信するとネットワークが過負荷になるため、適切にサイズ制限をすることをお勧めします。


Servletのファイルアップロードで、javax.servlet.http.HttpServletRequest#getPart(String)やgetParts()を実行すると、例外が発生する

Webアプリケーションにアクセスすると白紙のページが返却される

以下の可能性があります。

以下の対処を行ってください。

HTTPセッションが継続されない

Webサーバーコネクタを使用してWebサーバーと連携している場合、Webサーバー連携の設定に不整合が生じている可能性があります。「12.2 コマンド実行時の異常」の「asadminコマンド実行時、メッセージOM2120が出力される場合」を参照し、設定内容の確認と対処を行ってください。


WebSocket接続に失敗する

Webサーバーを経由する運用形態で、バーチャルホスト利用時にWebSocket接続の確立に失敗する場合、バーチャルホストに必要な設定が実施されていない可能性があります。詳細については、「1.4.22 Webサーバーコネクタの注意事項」の「バーチャルホストとWebSocketを使用する場合の注意」を参照してください。


WebサーバーコネクタとGlassFish間の接続がHTTP/2にならない

WebサーバーコネクタとGlassFish間の接続に使用するプロトコルに「http2」を指定しているにも関わらず、実際の接続がHTTP/2にならない場合には、以下の可能性が考えられます。

ヘッダの異常について

HTTP/2 通信時、サーバーログに「The thread pool's task queue is full」が出力されている場合

サーバーログに以下のメッセージが出力されている場合は、キューサイズを拡張してください。

The thread pool's task queue is full, limit: <数字>

キューサイズを拡張する場合は、以下の目安でキューサイズを設定してください。

キューサイズは、asadminコマンドを使用して変更できます。詳細は、以下を参照してください。

HTTP/2 通信では、HTTP/2のリクエスト・レスポンスは多重化されます。そのため、GlassFishで同時発生するリクエスト・レスポンス数はHTTP/1.x通信時より多く発生する場合があります。最大同時ストリーム(多重化)数はクライアント側の設定であり、GlassFishでは制御することはできません。


WebサーバーのエラーログにAH00940メッセージが出力される場合

Webサーバーを経由する運用形態において、WebサーバーのエラーログにAH00940メッセージが出力される場合があります。このメッセージは、WebサーバーがGlassFishに接続できない場合や、GlassFishから応答が返らない場合に出力されます。原因として考えられる以下の項目を確認し、該当する項目の対処を実施してください。

リクエストボディを取得できない、またはIOExceptionが発生する場合

Webアプリケーションからリクエストボディを取得できない場合、または、リクエストボディ取得時にIOExceptionが発生する場合、ネットワークの定義項目の「受信タイムアウト」までにリクエストボディを受信できていない可能性があります。以下の対処を実施してください。