質問編集履歴
6
エラーメッセージを修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -36,6 +36,12 @@
|
|
36
36
|
|
37
37
|
一旦時間がかかるクエリーを個別にチューニングして様子を見ています。
|
38
38
|
|
39
|
+
Dec 20 01:02:51 [4191-1] LOG: could not send data to client: Broken pipe
|
40
|
+
|
41
|
+
Dec 20 01:02:51 [4192-1] LOG: unexpected EOF on client connection
|
42
|
+
|
43
|
+
Dec 20 01:02:51 [4193-1] LOG: disconnection: session time: 0:02:49.872 user=ユーザー database=データベース host=ホスト port=ポート
|
44
|
+
|
39
45
|
|
40
46
|
|
41
47
|
2018.12.21 追記
|
@@ -50,8 +56,6 @@
|
|
50
56
|
|
51
57
|
### 発生している問題・エラーメッセージ
|
52
58
|
|
53
|
-
【パターンA時】
|
54
|
-
|
55
59
|
PostgreSQL側に以下のメッセージが表示されます。
|
56
60
|
|
57
61
|
|
@@ -61,28 +65,6 @@
|
|
61
65
|
LOG: unexpected EOF on client connection
|
62
66
|
|
63
67
|
LOG: disconnection: session time: 0:02:51.973 user=USER database=DATABASE host=HOST port=PORT
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
【パターンB時】
|
68
|
-
|
69
|
-
Dec 20 01:00:09 [244-1] LOG: statement: insert into テーブル
|
70
|
-
|
71
|
-
↑謎の空白と245~4188迄の番号欠番↓
|
72
|
-
|
73
|
-
Dec 20 01:02:51 [4189-1] LOG: could not send data to client: Connection reset by peer
|
74
|
-
|
75
|
-
Dec 20 01:02:51 [4189-2] STATEMENT: SELECT * FROM テーブルA LEFT JOIN テーブルB
|
76
|
-
|
77
|
-
Dec 20 01:02:51 [4190-1] LOG: duration: 159422.699 ms
|
78
|
-
|
79
|
-
Dec 20 01:02:51 [4191-1] LOG: could not send data to client: Broken pipe
|
80
|
-
|
81
|
-
Dec 20 01:02:51 [4192-1] LOG: unexpected EOF on client connection
|
82
|
-
|
83
|
-
Dec 20 01:02:51 [4193-1] LOG: disconnection: session time: 0:02:49.872 user=ユーザー database=データベース host=ホスト port=ポート
|
84
|
-
|
85
|
-
|
86
68
|
|
87
69
|
|
88
70
|
|
5
現状追加。
test
CHANGED
File without changes
|
test
CHANGED
@@ -35,6 +35,16 @@
|
|
35
35
|
対応後で、若干エラー内容は変わりました。
|
36
36
|
|
37
37
|
一旦時間がかかるクエリーを個別にチューニングして様子を見ています。
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
2018.12.21 追記
|
42
|
+
|
43
|
+
トランザクションの分割のみでは結果が同じ模様。
|
44
|
+
|
45
|
+
引っかかった物からクエリーチューニングを行っているが、
|
46
|
+
|
47
|
+
難航中。(自由に実行、集中して作業が出来ないのが辛い所)
|
38
48
|
|
39
49
|
|
40
50
|
|
4
文言修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -30,11 +30,11 @@
|
|
30
30
|
|
31
31
|
トランザクションの分割を行い2日程動かしました。
|
32
32
|
|
33
|
-
現状では完走しないケースが有りますが、
|
33
|
+
現状では完走しないケースがまだ有りますが、
|
34
34
|
|
35
|
-
対応後で若干エラー内容
|
35
|
+
対応後で、若干エラー内容は変わりました。
|
36
36
|
|
37
|
-
時間がかかるクエリーを個別にチューニングして様子を見ています。
|
37
|
+
一旦時間がかかるクエリーを個別にチューニングして様子を見ています。
|
38
38
|
|
39
39
|
|
40
40
|
|
@@ -128,9 +128,9 @@
|
|
128
128
|
|
129
129
|
$con->exec($delete_sql3, $where); //集計テーブルクリア
|
130
130
|
|
131
|
+
//<<---↑このクエリに時間がかかった場合はログがここまでになる
|
132
|
+
|
131
133
|
$con->commit();
|
132
|
-
|
133
|
-
//<<---↑このクエリに時間がかかった場合はログがここまでになる
|
134
134
|
|
135
135
|
$con->begin();
|
136
136
|
|
3
トランザクションの分割をしました
test
CHANGED
File without changes
|
test
CHANGED
@@ -26,7 +26,21 @@
|
|
26
26
|
|
27
27
|
|
28
28
|
|
29
|
+
2018.12.20 追記
|
30
|
+
|
31
|
+
トランザクションの分割を行い2日程動かしました。
|
32
|
+
|
33
|
+
現状では完走しないケースが有りますが、
|
34
|
+
|
35
|
+
対応後で若干エラー内容が変わりました。
|
36
|
+
|
37
|
+
時間がかかるクエリーを個別にチューニングして様子を見ています。
|
38
|
+
|
39
|
+
|
40
|
+
|
29
41
|
### 発生している問題・エラーメッセージ
|
42
|
+
|
43
|
+
【パターンA時】
|
30
44
|
|
31
45
|
PostgreSQL側に以下のメッセージが表示されます。
|
32
46
|
|
@@ -40,9 +54,33 @@
|
|
40
54
|
|
41
55
|
|
42
56
|
|
57
|
+
【パターンB時】
|
58
|
+
|
59
|
+
Dec 20 01:00:09 [244-1] LOG: statement: insert into テーブル
|
60
|
+
|
61
|
+
↑謎の空白と245~4188迄の番号欠番↓
|
62
|
+
|
63
|
+
Dec 20 01:02:51 [4189-1] LOG: could not send data to client: Connection reset by peer
|
64
|
+
|
65
|
+
Dec 20 01:02:51 [4189-2] STATEMENT: SELECT * FROM テーブルA LEFT JOIN テーブルB
|
66
|
+
|
67
|
+
Dec 20 01:02:51 [4190-1] LOG: duration: 159422.699 ms
|
68
|
+
|
69
|
+
Dec 20 01:02:51 [4191-1] LOG: could not send data to client: Broken pipe
|
70
|
+
|
71
|
+
Dec 20 01:02:51 [4192-1] LOG: unexpected EOF on client connection
|
72
|
+
|
73
|
+
Dec 20 01:02:51 [4193-1] LOG: disconnection: session time: 0:02:49.872 user=ユーザー database=データベース host=ホスト port=ポート
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
|
78
|
+
|
43
79
|
### 該当のソースコード
|
44
80
|
|
45
81
|
|
82
|
+
|
83
|
+
【初回質問時(パターンA)】
|
46
84
|
|
47
85
|
$con = new PDO(DSN, USERNAME, PASSWORD);
|
48
86
|
|
@@ -66,17 +104,71 @@
|
|
66
104
|
|
67
105
|
|
68
106
|
|
107
|
+
↓
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
【トランザクション分割(パターンB)】
|
112
|
+
|
113
|
+
$con = new PDO(DSN, USERNAME, PASSWORD);
|
114
|
+
|
115
|
+
$con->begin();
|
116
|
+
|
117
|
+
$con->exec($delete_sql1, $where); //集計テーブルクリア
|
118
|
+
|
119
|
+
$con->commit();
|
120
|
+
|
121
|
+
$con->begin();
|
122
|
+
|
123
|
+
$con->exec($delete_sql2, $where); //集計テーブルクリア
|
124
|
+
|
125
|
+
$con->commit();
|
126
|
+
|
127
|
+
$con->begin();
|
128
|
+
|
129
|
+
$con->exec($delete_sql3, $where); //集計テーブルクリア
|
130
|
+
|
131
|
+
$con->commit();
|
132
|
+
|
133
|
+
//<<---↑このクエリに時間がかかった場合はログがここまでになる
|
134
|
+
|
135
|
+
$con->begin();
|
136
|
+
|
137
|
+
$con->exec($insert_sql1, $where); //集計テーブルへ集計データを挿入
|
138
|
+
|
139
|
+
$con->commit();
|
140
|
+
|
141
|
+
$con->begin();
|
142
|
+
|
143
|
+
$con->exec($insert_sql2, $where); //集計テーブルへ集計データを挿入
|
144
|
+
|
145
|
+
$con->commit();
|
146
|
+
|
147
|
+
$con->begin();
|
148
|
+
|
149
|
+
$con->exec($insert_sql3, $where); //集計テーブルへ集計データを挿入
|
150
|
+
|
151
|
+
$con->commit();
|
152
|
+
|
153
|
+
|
154
|
+
|
69
155
|
### 試したこと
|
70
156
|
|
157
|
+
【パターンA時】
|
158
|
+
|
71
159
|
PHP側に
|
72
|
-
|
73
|
-
|
74
160
|
|
75
161
|
set_time_limit(0);
|
76
162
|
|
77
163
|
ini_set("session.gc_maxlifetime", 60*30);
|
78
164
|
|
79
165
|
を入れてみましたが改善できませんでした。
|
166
|
+
|
167
|
+
|
168
|
+
|
169
|
+
【パターンB時】
|
170
|
+
|
171
|
+
トランザクションを分割しました。
|
80
172
|
|
81
173
|
|
82
174
|
|
2
ソースコードに情報を足しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -46,17 +46,23 @@
|
|
46
46
|
|
47
47
|
$con = new PDO(DSN, USERNAME, PASSWORD);
|
48
48
|
|
49
|
+
$con->begin();
|
50
|
+
|
49
51
|
$con->exec($delete_sql1, $where); //集計テーブルクリア
|
50
52
|
|
51
53
|
$con->exec($delete_sql2, $where); //集計テーブルクリア
|
52
54
|
|
53
55
|
$con->exec($delete_sql3, $where); //集計テーブルクリア
|
54
56
|
|
57
|
+
//<<---↑このクエリに時間がかかった場合はログがここまでになる
|
58
|
+
|
55
59
|
$con->exec($insert_sql1, $where); //集計テーブルへ集計データを挿入
|
56
60
|
|
57
61
|
$con->exec($insert_sql2, $where); //集計テーブルへ集計データを挿入
|
58
62
|
|
59
63
|
$con->exec($insert_sql3, $where); //集計テーブルへ集計データを挿入
|
64
|
+
|
65
|
+
$con->commit();
|
60
66
|
|
61
67
|
|
62
68
|
|
1
ソースコードの情報を足しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -46,7 +46,17 @@
|
|
46
46
|
|
47
47
|
$con = new PDO(DSN, USERNAME, PASSWORD);
|
48
48
|
|
49
|
-
$con->exec($delete_sql1, $where);
|
49
|
+
$con->exec($delete_sql1, $where); //集計テーブルクリア
|
50
|
+
|
51
|
+
$con->exec($delete_sql2, $where); //集計テーブルクリア
|
52
|
+
|
53
|
+
$con->exec($delete_sql3, $where); //集計テーブルクリア
|
54
|
+
|
55
|
+
$con->exec($insert_sql1, $where); //集計テーブルへ集計データを挿入
|
56
|
+
|
57
|
+
$con->exec($insert_sql2, $where); //集計テーブルへ集計データを挿入
|
58
|
+
|
59
|
+
$con->exec($insert_sql3, $where); //集計テーブルへ集計データを挿入
|
50
60
|
|
51
61
|
|
52
62
|
|