回答編集履歴

3

jvisualvmについて追記した。

2015/07/08 07:48

投稿

eripong
eripong

スコア1546

test CHANGED
@@ -70,4 +70,8 @@
70
70
 
71
71
  java_pid9785.hprofを解析することで、スタックの詳細がわかる可能性があります。
72
72
 
73
+ JDK付属のjvisualvmで開くと、概要のタブにスレッドダンプが出ていたような気がします。
73
74
 
75
+ ただ、メモリを使い果たした瞬間の情報が残っているかは、分かりません。
76
+
77
+

2

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

2015/07/08 07:48

投稿

eripong
eripong

スコア1546

test CHANGED
@@ -25,3 +25,49 @@
25
25
  などもヒントになる可能性があります。
26
26
 
27
27
 
28
+
29
+ ### 追加情報からの推測
30
+
31
+ 停止前のGCログから、ヒープが不足している様子はないのに、
32
+
33
+ `java.lang.OutOfMemoryError: Java heap space`
34
+
35
+ になっているので、おそらく突発的なヒープ使用量の増加によるものと思います。
36
+
37
+ また、
38
+
39
+ `org.postgresql.util.PSQLException: Ran out of memory retrieving query results. `
40
+
41
+ とあることから、PostreSQLへのクエリの結果が大きすぎて、javaヒープを使い果たし、
42
+
43
+ さらにJDBCドライバの動作としてCヒープも大量に使い、LinuxのOOM Killerにkillされて
44
+
45
+ しまったのではないかと考えられます。
46
+
47
+
48
+
49
+ PostgreSQLへのクエリで、結果が大量になる可能性があるものはないでしょうか?
50
+
51
+
52
+
53
+ ```
54
+
55
+ org.postgresql.util.PSQLException: Ran out of memory retrieving query results.
56
+
57
+ at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1325)
58
+
59
+ at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:195)
60
+
61
+ ```
62
+
63
+
64
+
65
+ のスタックがもう少し残っていれば、アプリケーションのどこから発行した
66
+
67
+ クエリか分かるのですが。。。
68
+
69
+
70
+
71
+ java_pid9785.hprofを解析することで、スタックの詳細がわかる可能性があります。
72
+
73
+

1

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

2015/07/08 07:41

投稿

eripong
eripong

スコア1546

test CHANGED
@@ -5,6 +5,8 @@
5
5
 
6
6
 
7
7
  0. cpu使用率はどのくらいか?
8
+
9
+ 0. メモリ使用量の推移は?
8
10
 
9
11
  0. Tomcatのjavaプロセスは残っているか?
10
12
 
@@ -21,3 +23,5 @@
21
23
  週に一回?日に一回?特定の処理をしたとき?
22
24
 
23
25
  などもヒントになる可能性があります。
26
+
27
+