現在、Javaを使用したWebアプリ開発を行っており
下記の処理でローカル環境(開発用PC)では正常にいくが、サーバ環境では異常終了
となる事象が発生しております。
どなたか対応策をご存じな方がいましたらご回答よろしくお願い致します。
また未実施調査もあり、その調査方法が不明なため合わせてご回答よろしく
お願い致します。
■処理概要
画面に帳票ボタンがあり、そのボタンを押下すると別ブラウザに
帳票(PDF)が出力される。
■処理内容(帳票ボタン押下)
(1)DBから帳票出力対象となるデータを抽出
(2)(1)で抽出したデータを加工
(3)(2)で加工した帳票データを、帳票定義体とバインド
(4)(3)でバインドした帳票を別ブラウザに表示
■異常終了概要
押下されたボタンによって出力する帳票が異なり、
帳票出力対象データが大量にある場合、ある1つの帳票だけが
1時間ほど待っても出力結果がかえってこなかった。
そのためログを確認すると「java.net.SocketException: Broken pipe」が発生していた。
※それ以外の帳票については正常に帳票出力される。
■異常終了発生箇所について
サーバ環境でログを確認したところ、処理内容の(3)までは正常に処理されており
(4)の別ブラウザに表示する際に異常終了となっていた。
(4)の詳細処理内容として、(3)で作成した帳票データ(バインド済み帳票)を
javax.servlet.HttpServletResponse.getOutputStreamで取得したOutputStreamに
書き込み、そのOutputStreamをflushする処理になっている。
※異常終了は「帳票データをOutputStreamに書き込み」時に発生している。
=======================================
現在、異常終了となる帳票処理について調査した結果以下の事が判明した。
■調査内容
・大量データ時に異常終了となる帳票は、データを減らすと正常に帳票出力される。
・他帳票と比べ、帳票データ作成時間が長い。
※1.帳票データ作成時間は、帳票データをOutputStreamに書き込む時間は含んでいない。
※2.上記帳票はデータを減らし調査している。
・他帳票と比べ、帳票のファイルサイズは小さい
・1つのPCをWebサーバ、APサーバ、DBサーバとしている。サーバ環境内容として
OS:Linux(CentOS)
Web:Apache
AP:Tomcat
DB:PostgreSQL
・帳票データ作成時間が5分を越える場合、当事象(broken pipeエラー)が発生する。
※1.帳票データ処理にJavaのSleepメソッドで5分超える/越えない時間を設定し調査した。
※2.Tomcat、Apacheの設定ファイル(Web.xml,Server.xml,httpd.conf)を確認したが
5分(300秒、600000ミリ秒)の記載箇所は見つからなかった。
※3.帳票データ作成時間が5分を超える=サーバからクライアントへの応答が5分以上ない
・IEの仕様で「サーバーからデータが返されるまでのタイムアウト時間(5分)が設定されている」
との記事があり、レジストリを修正しタイムアウト時間を60分にしたが解決しなかった。
・対象データに問題がない(Linuxで扱えない文字などはない)事を確認した。
■調査方法不明
・Linux側(サーバ)でクライアントへ5分応答がない場合、コネクションを切断しているのでは
ないかと考えた(ネットワークの設定など)が、どの設定ファイルを確認すればよいか分からない。
※もしそれが原因だった場合の対応方法についても
A 回答 (11件中11~11件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
ファイルサイズが大きいので
メモリが足りないってことはない?
もっとJavaに大きくメモリを割り当てためしてはどお?
もしくは、ちょっとずつ読み込んで送信するようにするとか。
タイムアウトの確認をしたければ
完成済みのPDFを送信するだけの処理を試してみては?
この回答への補足
回答ありがとうございます。
>>ファイルサイズが大きいのでメモリが足りないってことはない?
→ファイルサイズについては出力される他帳票と比べサイズが少ないためファイルサイズの
問題ではないみたいです。
※データ件数を少なくすると出力されるため、他帳票と同一件数で行いファイルサイズが少ない
事を確認しています。
>>タイムアウトの確認をしたければ完成済みのPDFを送信するだけの処理を試してみては?
→PDFを送信する(OutputStreamのflush)処理には時間がかかっても問題ないみたいで、
サーバ側で5分を越える処理(帳票作成)をした後、OutputStreamに帳票データを
書き込みで処理が落ちてるみたいです。
なのでこの「5分」がキーワードになりそうなのですが、その設定がTomcat,Apacheにも
見つからず困っております。
もしかしたらLinux側が「サーバがクライアントに5分間レスポンスを返さなかったら
コネクションを切断する」という設定がされているのかと思っています。
その場合、Linuxのどの部分を見ればよいか分からなくて…。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Accessの代わりのノンプログラムデータベース作成 4 2022/10/21 09:26
- Visual Basic(VBA) ActiveReportのdetailをデータセットの自動バインドを使って帳票を出力しています。 1 2023/08/16 07:16
- IT・エンジニアリング ActiveReportのdetailをデータセットの自動バインドを使って帳票を出力しています。 1 2023/08/16 07:17
- システム 帳票出力を行う単体テストのテストデータが作成できません 2 2023/08/26 21:26
- IT・エンジニアリング 帳票出力を行う単体テストのテストデータが作成できません 2 2023/08/26 21:25
- 事務・総務 帳票類やデータがありません。法人成り。 解体業の会社で現場作業員 兼 事務員として勤めているのですが 3 2023/06/02 13:27
- Excel(エクセル) Excelについて教えてください。 帳票データがあります。 アクセスに取り込むため、 データ形式にし 1 2022/06/08 19:59
- Excel(エクセル) Excelの帳票形式をアクセスに取り込むため、 csvのデータ形式になるように、マクロを作成している 2 2022/06/12 22:52
- 会計ソフト・業務用ソフト VBA 記録簿の行間を空けないコードを教えて欲しい。 5 2023/07/10 19:29
- ハローワーク・職業安定所 職業安定所の調査 1 2022/05/12 17:44
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba クリップボードクリアにつ...
-
IISワーカープロセスが原因でCP...
-
appleスクリプトでアプリケーシ...
-
JavaでMDB
-
unzip32.dllの利用について(64b...
-
JavaアプリケーションからHTML...
-
VBのWPFとはなんでしょうか?
-
プラグインとパッチの違いは?
-
JSPファイルで生じるエラーをど...
-
Javaでのエラーについて
-
MSFormsとは何ですか?
-
mavenでtools.jar
-
VBAの「for i=1 to cells(…」...
-
java と javax の違いは?
-
gitでバージョン指定してダウン...
-
DirectX SDKのダウンロード
-
Eclipseソース開発画面の行番号...
-
美人時計の作り方
-
C言語で円周率を求めるプログラ...
-
データベースのデータをTextBox...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vba クリップボードクリアにつ...
-
IISワーカープロセスが原因でCP...
-
VBのWPFとはなんでしょうか?
-
unzip32.dllの利用について(64b...
-
プラグインとパッチの違いは?
-
意味が分からないエラー
-
java3dが動かない
-
帳票出力について
-
32ビットのアプリで、64ビットO...
-
ASP(VB).NETでの背景色変更
-
ログオフ中でもアプリケーショ...
-
C#のメモリマップドファイルに...
-
AccessとVBの違いについて
-
Java でネイティブアプリケーシ...
-
HTMLアプリケーションの作成
-
[VB.2005]クライアントからWEB...
-
このVBAでExcelアプリケーショ...
-
java起動時の日本語引数文字化...
-
JAVAプログラムをWEB表示させる...
-
SurfaceViewの一時停止や再開方法
おすすめ情報