teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

jvisualvmについて追記した。

2015/07/08 07:48

投稿

eripong
eripong

スコア1546

answer CHANGED
@@ -34,3 +34,5 @@
34
34
  クエリか分かるのですが。。。
35
35
 
36
36
  java_pid9785.hprofを解析することで、スタックの詳細がわかる可能性があります。
37
+ JDK付属のjvisualvmで開くと、概要のタブにスレッドダンプが出ていたような気がします。
38
+ ただ、メモリを使い果たした瞬間の情報が残っているかは、分かりません。

2

追加情報からの推測を追記した。

2015/07/08 07:48

投稿

eripong
eripong

スコア1546

answer CHANGED
@@ -11,3 +11,26 @@
11
11
  また、定期的にとは、どの様な頻度でしょうか?
12
12
  週に一回?日に一回?特定の処理をしたとき?
13
13
  などもヒントになる可能性があります。
14
+
15
+ ### 追加情報からの推測
16
+ 停止前のGCログから、ヒープが不足している様子はないのに、
17
+ `java.lang.OutOfMemoryError: Java heap space`
18
+ になっているので、おそらく突発的なヒープ使用量の増加によるものと思います。
19
+ また、
20
+ `org.postgresql.util.PSQLException: Ran out of memory retrieving query results. `
21
+ とあることから、PostreSQLへのクエリの結果が大きすぎて、javaヒープを使い果たし、
22
+ さらにJDBCドライバの動作としてCヒープも大量に使い、LinuxのOOM Killerにkillされて
23
+ しまったのではないかと考えられます。
24
+
25
+ PostgreSQLへのクエリで、結果が大量になる可能性があるものはないでしょうか?
26
+
27
+ ```
28
+ org.postgresql.util.PSQLException: Ran out of memory retrieving query results.
29
+ at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1325)
30
+ at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:195)
31
+ ```
32
+
33
+ のスタックがもう少し残っていれば、アプリケーションのどこから発行した
34
+ クエリか分かるのですが。。。
35
+
36
+ java_pid9785.hprofを解析することで、スタックの詳細がわかる可能性があります。

1

メモリについて追記した。

2015/07/08 07:41

投稿

eripong
eripong

スコア1546

answer CHANGED
@@ -2,6 +2,7 @@
2
2
  以下の様な停止した際の情報収集が必要と思います。
3
3
 
4
4
  0. cpu使用率はどのくらいか?
5
+ 0. メモリ使用量の推移は?
5
6
  0. Tomcatのjavaプロセスは残っているか?
6
7
  0. プロセスが残っている場合、ポートは開いているか?tcpの該当するポートの接続がどのくらいあるか?
7
8
  0. スレッドダンプを取得する。
@@ -9,4 +10,4 @@
9
10
 
10
11
  また、定期的にとは、どの様な頻度でしょうか?
11
12
  週に一回?日に一回?特定の処理をしたとき?
12
- などもヒントになる可能性があります。
13
+ などもヒントになる可能性があります。