質問編集履歴
11
追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -249,4 +249,7 @@
|
|
249
249
|
CentOS release 6.4 (Final)
|
250
250
|
```
|
251
251
|
|
252
|
+
今これをアップデートすると、下記が入るようです。
|
253
|
+
centos-release.x86_64 6-7.e16.centos12.3
|
254
|
+
|
252
255
|
ご意見いただけますと幸いです。
|
10
環境のアップデートについて追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
初めて質問させていただきます。
|
2
2
|
|
3
3
|
yum updateでphp7.0.2にアップデートしました。
|
4
|
-
サーバー上のアプリケーションは、見た目上は特に不具合なく動いている
|
4
|
+
サーバー上のアプリケーションは、見た目上は特に不具合なく動いているのですが、ApacheのエラーログにはSegmentation faultが非常に多く記録されるようになってしまいました。
|
5
5
|
|
6
6
|
(例)
|
7
7
|
[notice] child pid 2566 exit signal Segmentation fault (11)
|
@@ -35,19 +35,13 @@
|
|
35
35
|
いくつか出てきたcoreファイルは、すべてこのエラーでした。
|
36
36
|
libphp7.soに問題があるように思えますが、同様なハマり方をした方、どのように解決されましたでしょうか。
|
37
37
|
|
38
|
-
|
39
|
-
ちなみにyumのリポジトリは下記で更新しました。
|
40
|
-
http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
|
41
|
-
http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
|
42
|
-
|
43
|
-
|
44
38
|
エラーログの出方ですが、HTTPアクセスの量に応じてログも増えているような傾向があるのですが、いっぺんに3プロセスほどまとまって落ちたり、完全にHTTPアクセスと同期したエラーではなさそうに思えます。
|
45
39
|
|
46
40
|
[Wed Feb 03 11:45:07 2016] [notice] child pid 11648 exit signal Segmentation fault (11)
|
47
41
|
[Wed Feb 03 11:45:07 2016] [notice] child pid 11651 exit signal Segmentation fault (11)
|
48
42
|
[Wed Feb 03 11:45:07 2016] [notice] child pid 11662 exit signal Segmentation fault (11)
|
49
|
-
[Wed Feb 03 11:45:08 2016] [notice] child pid 11664 exit signal Segmentation fault (11)
|
50
43
|
|
44
|
+
|
51
45
|
プロセスはhttpdで間違い無さそうなのですが、やはり普通にサイトは動作しているようで、
|
52
46
|
このエラーが発生した時にユーザーに障害が発生しているということでもなさそうです。
|
53
47
|
キャッシュ関連の動作(Opchaceなど?)が関連しているのかもと思いましたが、正体がわかりません…。
|
@@ -55,7 +49,6 @@
|
|
55
49
|
他、関連するかはわからないですが起きている事象としては、MySQLのAborted clientsが似たようなペースで増えています。
|
56
50
|
これも、PHPアップデート前は発生していませんでした。
|
57
51
|
|
58
|
-
|
59
52
|
どなたか、ご助言いただけますと幸いです。
|
60
53
|
|
61
54
|
よろしくお願いいたします。
|
@@ -98,13 +91,8 @@
|
|
98
91
|
|
99
92
|
また、topコマンドで今生きているPIDをエラーログから探しても見つかりませんでした。(これは当たり前ですかね…)
|
100
93
|
|
101
|
-
|
102
94
|
サイトのアプリケーション動作自体は普通に動いている、サイトアクセスの増加にともなってエラーログも増える、ということを踏まえると、このエラーはhttpdプロセスが終了する時に発生しているのでは、という気がしてきました。
|
103
95
|
|
104
|
-
|
105
|
-
どなたか、ご意見伺えますと幸いです。
|
106
|
-
|
107
|
-
|
108
96
|
---
|
109
97
|
|
110
98
|
###【20160205追記】
|
@@ -112,7 +100,7 @@
|
|
112
100
|
更に色々と調査しました。
|
113
101
|
最初の書き込み時に下記の現象について書きました。
|
114
102
|
|
115
|
-
>
|
103
|
+
> MySQLのAborted clientsが似たようなペースで増えています。
|
116
104
|
これも、PHPアップデート前は発生していませんでした。
|
117
105
|
|
118
106
|
これの原因が判明しました。
|
@@ -137,10 +125,8 @@
|
|
137
125
|
|
138
126
|
他に所有者変更が必要なディレクトリがあるのかもしれませんが、調べても見つかりませんでした。
|
139
127
|
|
140
|
-
|
141
128
|
どなたか、ご意見いただけますと幸いです。
|
142
129
|
|
143
|
-
|
144
130
|
###【20160209追記】
|
145
131
|
|
146
132
|
PHP7.0.3がリリースされていたので、アップデートしてみては、との助言をいただきました。
|
@@ -148,31 +134,6 @@
|
|
148
134
|
```ssh
|
149
135
|
yum --enablerepo=remi-php70 update php php-devel php-opcache
|
150
136
|
|
151
|
-
================================================================================================================================
|
152
|
-
パッケージ アーキテクチャ バージョン リポジトリー 容量
|
153
|
-
================================================================================================================================
|
154
|
-
更新:
|
155
|
-
php x86_64 7.0.3-1.el6.remi remi-php70 2.7 M
|
156
|
-
php-devel x86_64 7.0.3-1.el6.remi remi-php70 1.3 M
|
157
|
-
php-opcache x86_64 7.0.3-1.el6.remi remi-php70 135 k
|
158
|
-
依存性関連での更新をします。:
|
159
|
-
php-bcmath x86_64 7.0.3-1.el6.remi remi-php70 55 k
|
160
|
-
php-cli x86_64 7.0.3-1.el6.remi remi-php70 3.9 M
|
161
|
-
php-common x86_64 7.0.3-1.el6.remi remi-php70 973 k
|
162
|
-
php-gd x86_64 7.0.3-1.el6.remi remi-php70 61 k
|
163
|
-
php-gmp x86_64 7.0.3-1.el6.remi remi-php70 52 k
|
164
|
-
php-json x86_64 7.0.3-1.el6.remi remi-php70 49 k
|
165
|
-
php-mbstring x86_64 7.0.3-1.el6.remi remi-php70 969 k
|
166
|
-
php-mcrypt x86_64 7.0.3-1.el6.remi remi-php70 46 k
|
167
|
-
php-mysqlnd x86_64 7.0.3-1.el6.remi remi-php70 208 k
|
168
|
-
php-pdo x86_64 7.0.3-1.el6.remi remi-php70 102 k
|
169
|
-
php-recode x86_64 7.0.3-1.el6.remi remi-php70 33 k
|
170
|
-
php-tidy x86_64 7.0.3-1.el6.remi remi-php70 49 k
|
171
|
-
php-xml x86_64 7.0.3-1.el6.remi remi-php70 168 k
|
172
|
-
|
173
|
-
トランザクションの要約
|
174
|
-
================================================================================================================================
|
175
|
-
アップグレード 16 パッケージ
|
176
137
|
```
|
177
138
|
|
178
139
|
```
|
@@ -189,17 +150,15 @@
|
|
189
150
|
|
190
151
|
ご意見いただけますと幸いです。
|
191
152
|
|
192
|
-
|
193
153
|
###【20160209追記2】
|
194
154
|
|
195
155
|
PHPのバグフォーラムを調べたところ、PHP7.0.2で似たような状況の報告を見つけました。
|
196
156
|
|
197
|
-
[
|
157
|
+
[こちら](https://bugs.php.net/bug.php?id=71492)
|
198
158
|
|
199
|
-
「見かけは動いているけど、Segmentation faultエラーが大量に出る」という点で一致しています
|
159
|
+
「見かけは動いているけど、Segmentation faultエラーが大量に出る」という点で一致しています。
|
200
160
|
gdbの結果の内容は違うみたいですが、原因は同じなのでしょうか。
|
201
161
|
|
202
|
-
|
203
162
|
また、httpdのプロセスidを観察してみたところ、やはり終了時にSegmentation faultが発生しているので間違い無さそうでした。
|
204
163
|
|
205
164
|
topコマンドで今ある適当なpidを選び、
|
@@ -207,9 +166,7 @@
|
|
207
166
|
それが消去された時点でApacheエラーログを見たところ、同じpidのSegmentation faultログが出力されていることを確認しました。
|
208
167
|
|
209
168
|
他、使用しているPHPライブラリに問題がないか確かめましたが、これも無関係のようでした。
|
210
|
-
※AWS for PHP 2を使っていました。[最新版](https://github.com/aws/aws-sdk-php/releases/tag/2.8.27)に差し替えましたが、変化なしでした。
|
211
169
|
|
212
|
-
|
213
170
|
引き続き調査しようと思います。
|
214
171
|
|
215
172
|
###【20160212追記】
|
@@ -243,7 +200,6 @@
|
|
243
200
|
#9 php_session_start () at /usr/src/debug/php-7.0.3/ext/session/session.c:1644
|
244
201
|
#10 0x0000000000000000 in ?? ()
|
245
202
|
|
246
|
-
|
247
203
|
(gdb) list
|
248
204
|
539 nIndex = h | ht->nTableMask;
|
249
205
|
540 idx = HT_HASH_EX(arData, nIndex);
|
@@ -257,12 +213,10 @@
|
|
257
213
|
548 }
|
258
214
|
```
|
259
215
|
|
260
|
-
|
261
216
|
zend_hash_index_find_bucketの問題なのかと思い検索してみましたが、過去この部分にバグフィックスがあったらしい(もう直ってる)ことくらいしかわかりませんでした。
|
262
217
|
|
263
218
|
|
264
219
|
ご意見いただけますと幸いです。
|
265
|
-
よろしくお願いいたします。
|
266
220
|
|
267
221
|
###【20160212追記2】
|
268
222
|
|
@@ -270,4 +224,29 @@
|
|
270
224
|
|
271
225
|
[gdb list一覧](https://www.evernote.com/shard/s45/sh/dc7bfa9f-fbf5-439f-b4b5-4135fed74ca5/b99debb01d4a3b8aeb43574ba404d5dd)
|
272
226
|
|
273
|
-
|
227
|
+
ここからもし原因がわかれば、ご助言いただけますと幸いです。
|
228
|
+
|
229
|
+
###【20160215追記】
|
230
|
+
|
231
|
+
環境の問題かも、と思い、yum updateで諸々のモジュールを最新にしたり、カーネルアップデートをしたりしてみました。
|
232
|
+
|
233
|
+
```ここに言語を入力
|
234
|
+
カーネルバージョン
|
235
|
+
cat /proc/version
|
236
|
+
Linux version 2.6.32-358.23.2.el6.x86_64 (mockbuild@c6b9.bsys.dev.centos.org) (g cc version 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC) ) #1 SMP Wed Oct 16 18:37:12 U TC 2013
|
237
|
+
|
238
|
+
※20160213 kernel update
|
239
|
+
|
240
|
+
Linux version 2.6.32-573.18.1.el6.x86_64 (mockbuild@c6b8.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC) ) #1 SMP Tue Feb 9 22:46:17 UTC 2016
|
241
|
+
```
|
242
|
+
|
243
|
+
が、これでも改善はされませんでした。
|
244
|
+
あと残るはCentOSが6.4なのを最新にしてみるか、くらいなのですが、関係あるのかどうかは今のところわかりません…。
|
245
|
+
6.4だとPHP7で問題あるのかどうかの情報はないようです。
|
246
|
+
|
247
|
+
```
|
248
|
+
# cat /etc/redhat-release
|
249
|
+
CentOS release 6.4 (Final)
|
250
|
+
```
|
251
|
+
|
252
|
+
ご意見いただけますと幸いです。
|
9
更にgdbの結果追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -6,7 +6,6 @@
|
|
6
6
|
(例)
|
7
7
|
[notice] child pid 2566 exit signal Segmentation fault (11)
|
8
8
|
|
9
|
-
|
10
9
|
coreファイルを取得し、gdbを見てみたのですが、下記のような結果になりました。
|
11
10
|
|
12
11
|
(gdb)where の結果
|
@@ -42,13 +41,6 @@
|
|
42
41
|
http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
|
43
42
|
|
44
43
|
|
45
|
-
よろしくお願いいたします。
|
46
|
-
|
47
|
-
|
48
|
-
---
|
49
|
-
|
50
|
-
追記です。
|
51
|
-
|
52
44
|
エラーログの出方ですが、HTTPアクセスの量に応じてログも増えているような傾向があるのですが、いっぺんに3プロセスほどまとまって落ちたり、完全にHTTPアクセスと同期したエラーではなさそうに思えます。
|
53
45
|
|
54
46
|
[Wed Feb 03 11:45:07 2016] [notice] child pid 11648 exit signal Segmentation fault (11)
|
@@ -270,4 +262,12 @@
|
|
270
262
|
|
271
263
|
|
272
264
|
ご意見いただけますと幸いです。
|
273
|
-
よろしくお願いいたします。
|
265
|
+
よろしくお願いいたします。
|
266
|
+
|
267
|
+
###【20160212追記2】
|
268
|
+
|
269
|
+
文字数の制限に達してしまったので、gdb listを1個1個のframeに対して実行した結果を作成しました。
|
270
|
+
|
271
|
+
[gdb list一覧](https://www.evernote.com/shard/s45/sh/dc7bfa9f-fbf5-439f-b4b5-4135fed74ca5/b99debb01d4a3b8aeb43574ba404d5dd)
|
272
|
+
|
273
|
+
どこかに引っかかっているのだと思いますが、ここからもし原因がわかれば、ご助言いただけますと幸いです。
|
8
php-debuginfo追加後のgdb捜査について追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -55,10 +55,6 @@
|
|
55
55
|
[Wed Feb 03 11:45:07 2016] [notice] child pid 11651 exit signal Segmentation fault (11)
|
56
56
|
[Wed Feb 03 11:45:07 2016] [notice] child pid 11662 exit signal Segmentation fault (11)
|
57
57
|
[Wed Feb 03 11:45:08 2016] [notice] child pid 11664 exit signal Segmentation fault (11)
|
58
|
-
[Wed Feb 03 11:45:10 2016] [notice] child pid 11658 exit signal Segmentation fault (11)
|
59
|
-
[Wed Feb 03 11:46:40 2016] [notice] child pid 11628 exit signal Segmentation fault (11)
|
60
|
-
[Wed Feb 03 11:46:40 2016] [notice] child pid 11686 exit signal Segmentation fault (11)
|
61
|
-
[Wed Feb 03 11:46:40 2016] [notice] child pid 11704 exit signal Segmentation fault (11)
|
62
58
|
|
63
59
|
プロセスはhttpdで間違い無さそうなのですが、やはり普通にサイトは動作しているようで、
|
64
60
|
このエラーが発生した時にユーザーに障害が発生しているということでもなさそうです。
|
@@ -222,4 +218,56 @@
|
|
222
218
|
※AWS for PHP 2を使っていました。[最新版](https://github.com/aws/aws-sdk-php/releases/tag/2.8.27)に差し替えましたが、変化なしでした。
|
223
219
|
|
224
220
|
|
225
|
-
引き続き調査しようと思います。
|
221
|
+
引き続き調査しようと思います。
|
222
|
+
|
223
|
+
###【20160212追記】
|
224
|
+
|
225
|
+
コメントにて、php-debuginfoを入れて再度gdbをとのご意見をいただきましたので、結果を記載します。
|
226
|
+
|
227
|
+
```ssh
|
228
|
+
yum --enablerepo=remi-php70 install php-debuginfo
|
229
|
+
|
230
|
+
```
|
231
|
+
php70-php-debuginfo-7.0.3-1.el6.remi.x86_64がインストールされました。
|
232
|
+
|
233
|
+
coreファイルをgdbで実行し、where,listをしてみた結果が以下です。
|
234
|
+
|
235
|
+
```
|
236
|
+
(gdb) where
|
237
|
+
#0 0x00007f177b70a2ff in zend_hash_index_find_bucket (ht=0x0,
|
238
|
+
h=13841567621774083997) at /usr/src/debug/php-7.0.3/Zend/zend_hash.c:544
|
239
|
+
#1 zend_hash_index_exists (ht=0x0, h=13841567621774083997)
|
240
|
+
at /usr/src/debug/php-7.0.3/Zend/zend_hash.c:2021
|
241
|
+
#2 0x00007f177b60745e in ?? ()
|
242
|
+
at /usr/src/debug/php-7.0.3/ext/session/session.c:1676
|
243
|
+
from /etc/httpd/modules/libphp7.so
|
244
|
+
#3 0x00007f17790174a0 in ?? ()
|
245
|
+
#4 0x00007f177bacb368 in labels.92387 () from /etc/httpd/modules/libphp7.so
|
246
|
+
#5 0x00007f17882f0410 in ?? ()
|
247
|
+
#6 0x00007f1779017030 in ?? ()
|
248
|
+
#7 0x00007f177bacb366 in labels.92387 () from /etc/httpd/modules/libphp7.so
|
249
|
+
#8 0x00007f177b60793d in zend_string_release ()
|
250
|
+
at /usr/src/debug/php-7.0.3/Zend/zend_string.h:271
|
251
|
+
#9 php_session_start () at /usr/src/debug/php-7.0.3/ext/session/session.c:1644
|
252
|
+
#10 0x0000000000000000 in ?? ()
|
253
|
+
|
254
|
+
|
255
|
+
(gdb) list
|
256
|
+
539 nIndex = h | ht->nTableMask;
|
257
|
+
540 idx = HT_HASH_EX(arData, nIndex);
|
258
|
+
541 while (idx != HT_INVALID_IDX) {
|
259
|
+
542 ZEND_ASSERT(idx < HT_IDX_TO_HASH(ht->nTableSize));
|
260
|
+
543 p = HT_HASH_TO_BUCKET_EX(arData, idx);
|
261
|
+
544 if (p->h == h && !p->key) {
|
262
|
+
545 return p;
|
263
|
+
546 }
|
264
|
+
547 idx = Z_NEXT(p->val);
|
265
|
+
548 }
|
266
|
+
```
|
267
|
+
|
268
|
+
|
269
|
+
zend_hash_index_find_bucketの問題なのかと思い検索してみましたが、過去この部分にバグフィックスがあったらしい(もう直ってる)ことくらいしかわかりませんでした。
|
270
|
+
|
271
|
+
|
272
|
+
ご意見いただけますと幸いです。
|
273
|
+
よろしくお願いいたします。
|
7
進捗です。
title
CHANGED
File without changes
|
body
CHANGED
@@ -199,4 +199,27 @@
|
|
199
199
|
|
200
200
|
Zend OPcache がv7.0.6-devなのが少し気になりますが、もしかしてこれのverを下げたほうがいいのでしょうか。
|
201
201
|
|
202
|
-
ご意見いただけますと幸いです。
|
202
|
+
ご意見いただけますと幸いです。
|
203
|
+
|
204
|
+
|
205
|
+
###【20160209追記2】
|
206
|
+
|
207
|
+
PHPのバグフォーラムを調べたところ、PHP7.0.2で似たような状況の報告を見つけました。
|
208
|
+
|
209
|
+
[https://bugs.php.net/bug.php?id=71492](https://bugs.php.net/bug.php?id=71492)
|
210
|
+
|
211
|
+
「見かけは動いているけど、Segmentation faultエラーが大量に出る」という点で一致していますね。
|
212
|
+
gdbの結果の内容は違うみたいですが、原因は同じなのでしょうか。
|
213
|
+
|
214
|
+
|
215
|
+
また、httpdのプロセスidを観察してみたところ、やはり終了時にSegmentation faultが発生しているので間違い無さそうでした。
|
216
|
+
|
217
|
+
topコマンドで今ある適当なpidを選び、
|
218
|
+
/proc ディレクトリにあるプロセスディレクトリを監視、
|
219
|
+
それが消去された時点でApacheエラーログを見たところ、同じpidのSegmentation faultログが出力されていることを確認しました。
|
220
|
+
|
221
|
+
他、使用しているPHPライブラリに問題がないか確かめましたが、これも無関係のようでした。
|
222
|
+
※AWS for PHP 2を使っていました。[最新版](https://github.com/aws/aws-sdk-php/releases/tag/2.8.27)に差し替えましたが、変化なしでした。
|
223
|
+
|
224
|
+
|
225
|
+
引き続き調査しようと思います。
|
6
進捗について書きました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -150,4 +150,53 @@
|
|
150
150
|
他に所有者変更が必要なディレクトリがあるのかもしれませんが、調べても見つかりませんでした。
|
151
151
|
|
152
152
|
|
153
|
-
どなたか、ご意見いただけますと幸いです。
|
153
|
+
どなたか、ご意見いただけますと幸いです。
|
154
|
+
|
155
|
+
|
156
|
+
###【20160209追記】
|
157
|
+
|
158
|
+
PHP7.0.3がリリースされていたので、アップデートしてみては、との助言をいただきました。
|
159
|
+
|
160
|
+
```ssh
|
161
|
+
yum --enablerepo=remi-php70 update php php-devel php-opcache
|
162
|
+
|
163
|
+
================================================================================================================================
|
164
|
+
パッケージ アーキテクチャ バージョン リポジトリー 容量
|
165
|
+
================================================================================================================================
|
166
|
+
更新:
|
167
|
+
php x86_64 7.0.3-1.el6.remi remi-php70 2.7 M
|
168
|
+
php-devel x86_64 7.0.3-1.el6.remi remi-php70 1.3 M
|
169
|
+
php-opcache x86_64 7.0.3-1.el6.remi remi-php70 135 k
|
170
|
+
依存性関連での更新をします。:
|
171
|
+
php-bcmath x86_64 7.0.3-1.el6.remi remi-php70 55 k
|
172
|
+
php-cli x86_64 7.0.3-1.el6.remi remi-php70 3.9 M
|
173
|
+
php-common x86_64 7.0.3-1.el6.remi remi-php70 973 k
|
174
|
+
php-gd x86_64 7.0.3-1.el6.remi remi-php70 61 k
|
175
|
+
php-gmp x86_64 7.0.3-1.el6.remi remi-php70 52 k
|
176
|
+
php-json x86_64 7.0.3-1.el6.remi remi-php70 49 k
|
177
|
+
php-mbstring x86_64 7.0.3-1.el6.remi remi-php70 969 k
|
178
|
+
php-mcrypt x86_64 7.0.3-1.el6.remi remi-php70 46 k
|
179
|
+
php-mysqlnd x86_64 7.0.3-1.el6.remi remi-php70 208 k
|
180
|
+
php-pdo x86_64 7.0.3-1.el6.remi remi-php70 102 k
|
181
|
+
php-recode x86_64 7.0.3-1.el6.remi remi-php70 33 k
|
182
|
+
php-tidy x86_64 7.0.3-1.el6.remi remi-php70 49 k
|
183
|
+
php-xml x86_64 7.0.3-1.el6.remi remi-php70 168 k
|
184
|
+
|
185
|
+
トランザクションの要約
|
186
|
+
================================================================================================================================
|
187
|
+
アップグレード 16 パッケージ
|
188
|
+
```
|
189
|
+
|
190
|
+
```
|
191
|
+
PHP 7.0.3 (cli) (built: Feb 3 2016 11:40:05) ( NTS )
|
192
|
+
Copyright (c) 1997-2016 The PHP Group
|
193
|
+
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
|
194
|
+
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
|
195
|
+
```
|
196
|
+
|
197
|
+
アップデートは問題なく終了したのですが、サーバー再起動後、やはり継続してSegment faultは発生し続けています。
|
198
|
+
PHP本体の問題ではなかったのですかね…。
|
199
|
+
|
200
|
+
Zend OPcache がv7.0.6-devなのが少し気になりますが、もしかしてこれのverを下げたほうがいいのでしょうか。
|
201
|
+
|
202
|
+
ご意見いただけますと幸いです。
|
5
誤字修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -145,7 +145,7 @@
|
|
145
145
|
2に関してはもともとスクリプト側の問題ということで、それはそれで修正出来て良かったのですが、1に関しては未だに原因不明です。
|
146
146
|
|
147
147
|
|
148
|
-
思いたる節としては、諸事情でPHPのインストールユーザーとApacheの実行ユーザーに違いがあるため、
|
148
|
+
思いあたる節としては、諸事情でPHPのインストールユーザーとApacheの実行ユーザーに違いがあるため、sesston_save_pathの所有者がそのままだとセッションの書き込みが出来ないために、そのディレクトリの所有者をchownしている点です。
|
149
149
|
|
150
150
|
他に所有者変更が必要なディレクトリがあるのかもしれませんが、調べても見つかりませんでした。
|
151
151
|
|
4
調査進捗について追記。
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
PHP7update後、Segmentation faultが起きます。
|
1
|
+
PHP7update後、Segmentation faultが起きます。追記・PHPのGCが原因?
|
body
CHANGED
@@ -74,7 +74,7 @@
|
|
74
74
|
|
75
75
|
---
|
76
76
|
|
77
|
-
【201602031909追記】
|
77
|
+
###【201602031909追記】
|
78
78
|
|
79
79
|
エラーログとプロセスを確認したところ、少し事象が見えてきたきがしたので追記です。
|
80
80
|
|
@@ -114,4 +114,40 @@
|
|
114
114
|
サイトのアプリケーション動作自体は普通に動いている、サイトアクセスの増加にともなってエラーログも増える、ということを踏まえると、このエラーはhttpdプロセスが終了する時に発生しているのでは、という気がしてきました。
|
115
115
|
|
116
116
|
|
117
|
-
どなたか、ご意見伺えますと幸いです。
|
117
|
+
どなたか、ご意見伺えますと幸いです。
|
118
|
+
|
119
|
+
|
120
|
+
---
|
121
|
+
|
122
|
+
###【20160205追記】
|
123
|
+
|
124
|
+
更に色々と調査しました。
|
125
|
+
最初の書き込み時に下記の現象について書きました。
|
126
|
+
|
127
|
+
> 他、関連するかはわからないですが起きている事象としては、MySQLのAborted clientsが似たようなペースで増えています。
|
128
|
+
これも、PHPアップデート前は発生していませんでした。
|
129
|
+
|
130
|
+
これの原因が判明しました。
|
131
|
+
|
132
|
+
[オブログ — Statement の解放漏れには気をつけよう](http://objectclub.tumblr.com/post/97692551321/statement-%E3%81%AE%E8%A7%A3%E6%94%BE%E6%BC%8F%E3%82%8C%E3%81%AB%E3%81%AF%E6%B0%97%E3%82%92%E3%81%A4%E3%81%91%E3%82%88%E3%81%86)
|
133
|
+
|
134
|
+
スクリプトを調べたところ、いくつかMySQLのStatementをcloseしていない箇所が見つかり、それをcloseするように直したところ、Aborted cliantの増加は止まりました。
|
135
|
+
|
136
|
+
> 正常に動作する場合は、新しい PreparedStatement が上書きされた後に GC が上手く動作して古い PreparedStatement が解放されるのですが、GC が上手く動作しない場合は古い PreparedStatement が解放されず、データベースとの接続を保った状態のまま残ってしまいます。
|
137
|
+
|
138
|
+
この問題が発生する前ではStatementをcloseしなくてもAborted cliantが増えてなかったのが、問題発生後に顕在化したということは、上記引用にある通り、**GCが上手く動作しない状態**にあるのではと推察します。
|
139
|
+
|
140
|
+
|
141
|
+
0. PHPをupdate後、GCに問題が発生し、Segmentation faultが大量発生
|
142
|
+
1. GCが上手く動かないため、これまではよしなにされていたPHPスクリプトのStatement解放漏れが顕在化
|
143
|
+
|
144
|
+
というのが現状なのかと思います。
|
145
|
+
2に関してはもともとスクリプト側の問題ということで、それはそれで修正出来て良かったのですが、1に関しては未だに原因不明です。
|
146
|
+
|
147
|
+
|
148
|
+
思いたる節としては、諸事情でPHPのインストールユーザーとApacheの実行ユーザーに違いがあるため、sessiton_save_pathの所有者がそのままだとセッションの書き込みが出来ないために、そのディレクトリの所有者をchownしている点です。
|
149
|
+
|
150
|
+
他に所有者変更が必要なディレクトリがあるのかもしれませんが、調べても見つかりませんでした。
|
151
|
+
|
152
|
+
|
153
|
+
どなたか、ご意見いただけますと幸いです。
|
3
ログの詳細な調査を追加してみました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -70,4 +70,48 @@
|
|
70
70
|
|
71
71
|
どなたか、ご助言いただけますと幸いです。
|
72
72
|
|
73
|
-
よろしくお願いいたします。
|
73
|
+
よろしくお願いいたします。
|
74
|
+
|
75
|
+
---
|
76
|
+
|
77
|
+
【201602031909追記】
|
78
|
+
|
79
|
+
エラーログとプロセスを確認したところ、少し事象が見えてきたきがしたので追記です。
|
80
|
+
|
81
|
+
ある時間(2016-02-03-1825)のtopのスクリーンショットを取り、その後のエラーログを確認したところ、殆どのhttpdプロセスはこのエラーを吐いているということがわかりました。
|
82
|
+
|
83
|
+

|
84
|
+
|
85
|
+
これに映っているhttpdのPIDを全て調べたところ、2/3くらいはエラーログが存在しました。
|
86
|
+
|
87
|
+
```apache
|
88
|
+
# 201602031902頃のエラーログを検索
|
89
|
+
[Wed Feb 03 18:26:52 2016] [notice] child pid 21489 exit signal Segmentation fault (11)
|
90
|
+
[Wed Feb 03 18:27:41 2016] [notice] child pid 21493 exit signal Segmentation fault (11)
|
91
|
+
[Wed Feb 03 18:28:25 2016] [notice] child pid 21440 exit signal Segmentation fault (11)
|
92
|
+
[Wed Feb 03 18:27:43 2016] [notice] child pid 21366 exit signal Segmentation fault (11)
|
93
|
+
[Wed Feb 03 18:28:19 2016] [notice] child pid 21522 exit signal Segmentation fault (11)
|
94
|
+
[Wed Feb 03 18:28:22 2016] [notice] child pid 21520 exit signal Segmentation fault (11)
|
95
|
+
[Wed Feb 03 18:28:25 2016] [notice] child pid 21494 exit signal Segmentation fault (11)
|
96
|
+
[Wed Feb 03 18:28:27 2016] [notice] child pid 21257 exit signal Segmentation fault (11)
|
97
|
+
[Wed Feb 03 18:28:47 2016] [notice] child pid 21519 exit signal Segmentation fault (11)
|
98
|
+
[Wed Feb 03 18:30:15 2016] [notice] child pid 21455 exit signal Segmentation fault (11)
|
99
|
+
[Wed Feb 03 18:31:15 2016] [notice] child pid 21376 exit signal Segmentation fault (11)
|
100
|
+
|
101
|
+
|
102
|
+
↓無かったPID
|
103
|
+
21521
|
104
|
+
21444
|
105
|
+
21403
|
106
|
+
21453
|
107
|
+
21525
|
108
|
+
|
109
|
+
```
|
110
|
+
|
111
|
+
また、topコマンドで今生きているPIDをエラーログから探しても見つかりませんでした。(これは当たり前ですかね…)
|
112
|
+
|
113
|
+
|
114
|
+
サイトのアプリケーション動作自体は普通に動いている、サイトアクセスの増加にともなってエラーログも増える、ということを踏まえると、このエラーはhttpdプロセスが終了する時に発生しているのでは、という気がしてきました。
|
115
|
+
|
116
|
+
|
117
|
+
どなたか、ご意見伺えますと幸いです。
|
2
説明追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -60,6 +60,8 @@
|
|
60
60
|
[Wed Feb 03 11:46:40 2016] [notice] child pid 11686 exit signal Segmentation fault (11)
|
61
61
|
[Wed Feb 03 11:46:40 2016] [notice] child pid 11704 exit signal Segmentation fault (11)
|
62
62
|
|
63
|
+
プロセスはhttpdで間違い無さそうなのですが、やはり普通にサイトは動作しているようで、
|
64
|
+
このエラーが発生した時にユーザーに障害が発生しているということでもなさそうです。
|
63
65
|
キャッシュ関連の動作(Opchaceなど?)が関連しているのかもと思いましたが、正体がわかりません…。
|
64
66
|
|
65
67
|
他、関連するかはわからないですが起きている事象としては、MySQLのAborted clientsが似たようなペースで増えています。
|
1
エラーログの傾向について追記しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -42,4 +42,30 @@
|
|
42
42
|
http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
|
43
43
|
|
44
44
|
|
45
|
+
よろしくお願いいたします。
|
46
|
+
|
47
|
+
|
48
|
+
---
|
49
|
+
|
50
|
+
追記です。
|
51
|
+
|
52
|
+
エラーログの出方ですが、HTTPアクセスの量に応じてログも増えているような傾向があるのですが、いっぺんに3プロセスほどまとまって落ちたり、完全にHTTPアクセスと同期したエラーではなさそうに思えます。
|
53
|
+
|
54
|
+
[Wed Feb 03 11:45:07 2016] [notice] child pid 11648 exit signal Segmentation fault (11)
|
55
|
+
[Wed Feb 03 11:45:07 2016] [notice] child pid 11651 exit signal Segmentation fault (11)
|
56
|
+
[Wed Feb 03 11:45:07 2016] [notice] child pid 11662 exit signal Segmentation fault (11)
|
57
|
+
[Wed Feb 03 11:45:08 2016] [notice] child pid 11664 exit signal Segmentation fault (11)
|
58
|
+
[Wed Feb 03 11:45:10 2016] [notice] child pid 11658 exit signal Segmentation fault (11)
|
59
|
+
[Wed Feb 03 11:46:40 2016] [notice] child pid 11628 exit signal Segmentation fault (11)
|
60
|
+
[Wed Feb 03 11:46:40 2016] [notice] child pid 11686 exit signal Segmentation fault (11)
|
61
|
+
[Wed Feb 03 11:46:40 2016] [notice] child pid 11704 exit signal Segmentation fault (11)
|
62
|
+
|
63
|
+
キャッシュ関連の動作(Opchaceなど?)が関連しているのかもと思いましたが、正体がわかりません…。
|
64
|
+
|
65
|
+
他、関連するかはわからないですが起きている事象としては、MySQLのAborted clientsが似たようなペースで増えています。
|
66
|
+
これも、PHPアップデート前は発生していませんでした。
|
67
|
+
|
68
|
+
|
69
|
+
どなたか、ご助言いただけますと幸いです。
|
70
|
+
|
45
71
|
よろしくお願いいたします。
|