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

質問編集履歴

11

追記

2016/02/15 01:36

投稿

snic518
snic518

スコア39

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

環境のアップデートについて追記

2016/02/15 01:36

投稿

snic518
snic518

スコア39

title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,7 @@
1
1
  初めて質問させていただきます。
2
2
 
3
3
  yum updateでphp7.0.2にアップデートしました。
4
- サーバー上のアプリケーションは、見た目上は特に不具合なく動いているようなのですが、ApacheのエラーログにはSegmentation faultが非常に多く記録されるようになってしまいました。
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
- > 他、関連するかはわからないですが起きている事象としては、MySQLのAborted clientsが似たようなペースで増えています。
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
- [https://bugs.php.net/bug.php?id=71492](https://bugs.php.net/bug.php?id=71492)
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の結果追記

2016/02/15 01:35

投稿

snic518
snic518

スコア39

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捜査について追記

2016/02/12 12:18

投稿

snic518
snic518

スコア39

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

進捗です。

2016/02/12 00:52

投稿

snic518
snic518

スコア39

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

進捗について書きました。

2016/02/09 12:51

投稿

snic518
snic518

スコア39

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

誤字修正

2016/02/09 01:26

投稿

snic518
snic518

スコア39

title CHANGED
File without changes
body CHANGED
@@ -145,7 +145,7 @@
145
145
  2に関してはもともとスクリプト側の問題ということで、それはそれで修正出来て良かったのですが、1に関しては未だに原因不明です。
146
146
 
147
147
 
148
- 思いたる節としては、諸事情でPHPのインストールユーザーとApacheの実行ユーザーに違いがあるため、sessiton_save_pathの所有者がそのままだとセッションの書き込みが出来ないために、そのディレクトリの所有者をchownしている点です。
148
+ 思いたる節としては、諸事情でPHPのインストールユーザーとApacheの実行ユーザーに違いがあるため、sesston_save_pathの所有者がそのままだとセッションの書き込みが出来ないために、そのディレクトリの所有者をchownしている点です。
149
149
 
150
150
  他に所有者変更が必要なディレクトリがあるのかもしれませんが、調べても見つかりませんでした。
151
151
 

4

調査進捗について追記。

2016/02/05 03:35

投稿

snic518
snic518

スコア39

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

ログの詳細な調査を追加してみました。

2016/02/05 03:26

投稿

snic518
snic518

スコア39

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
+ ![top](6c76a59d80ea876f3f5b47ac3dfb1773.gif)
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

説明追記

2016/02/03 10:17

投稿

snic518
snic518

スコア39

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

エラーログの傾向について追記しました。

2016/02/03 03:10

投稿

snic518
snic518

スコア39

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
  よろしくお願いいたします。