なんとかサイトは閲覧できるようになりました。ログを確認してみると
[Fri Jul 17 01:06:48 2020] [error] [client xxxxxxxxxx] PHP Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 2101248 bytes) in /documentroot/concrete/src/Area/Layout/Preset/Provider/Manager.php on line 37
と見られ、エリアプリセットもエラーを吐いていました。このコア部分の
$presets = array();
foreach($this->providers as $provider) {
//$presets = array_merge($presets, $provider->getPresets());
}
上記箇所にコメントアウトすることでバグが起きなくなりました。(コアをいじるのはご法度ですが...)
しかしエリアプリセットを使えなくしたので、「記事+画像横並び」みたいなレイアウトが崩れて全て縦並びになってしまいました。お客様にはサイトがとりあえず見れるので今のところは大丈夫とのことで、引き続きテーマファイルなどを見直しています。
CMSによるページ編集は禁止にして、エリアプリセットのバグの対処にあたります。ファイルアップロード系のご指摘に感してお客様に尋ねましたが、該当するようなことは行っておりませんでした。アドバイスありがとうございました。
引き続きエリアプリセットあたりのエラーの究明、テーマコントローラーでのエリアプリセットをvagrant上で確認します。
このエリアプリセットあたりに今回のようなバグが発生したというissueやpull request、他のフォーラムではありますか?(念のため英語版の方でも投稿します。)
Posted on 7月 17, 2020 at 12:06 午後
|
Concrete5を用いて複数の会社のサイトを運営しております。そのうち5.7.5.13のバージョンを用いているサイトが突如、一部ページは見れるものの一部ページはphpのメモリ超過エラーが発生し閲覧できない事象が発生しました。またサイト全体が重くなってしまっています。
この現象は7月17日に唐突に発生しました。ssl_errologに突如として以下の様なエラーが出力されました。
[Thu Jul 16 20:01:25 2020] [error] [client xxxxxx] PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 918016 bytes) in /documentroot/concrete/src/Support/Facade/Database.php on line 22, referer: XXXXXXXX
[Thu Jul 16 20:02:43 2020] [error] [client xxxxxx] PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 917504 bytes) in /documentroot/concrete/src/Support/Facade/Database.php on line 22, referer: XXXXXXXXX
[Thu Jul 16 20:03:15 2020] [error] [client xxxxxx] PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 924672 bytes) in /documentroot/concrete/src/Support/Facade/Database.php on line 22
[Thu Jul 16 20:03:46 2020] [error] [client xxxxxx] PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 915968 bytes) in /documentroot/concrete/src/A
rea/Layout/Preset/Provider/Manager.php on line 37, referer: XXXXXXXXX
[Thu Jul 16 20:03:50 2020] [error] [client xxxxxx] PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 918016 bytes) in /documentroot/concrete/src/Support/Facade/Database.php on line 22, referer: XXXXXXXX
concrete以外にapacheやphp、その他のソフトに問題があるかを確かめ対処を行いましたが、閲覧ができないページは依然として残り、最終的に上記のエラーは出力され続けました。
このサーバーでは他のサイト(Concrete5)も管理しており、バーチャルホストで区切っています。そしてphpや他のリソースは共用なので、サーバーに問題があれば他のサイトでも閲覧不可のページは発生します。しかし他のサイトは特にその様な問題はなく、5.7.5.13のサイトのみこのエラーが発生します。
カスタムブロック、独自パッケージの実装などもあるため要因は多岐に渡ると思います。しかし/concrete/src/Support/Facade/Databaseでphpのメモリ超過が繰り返し報告されているのでデータベースに接続するも、無限ループか何かが起きているのでは?データベースに接続するcoreのものか自作の物が影響しているのでは?と思っています。
このエラーは今日いきなり発生し、このサイト自体は5年前から運営して今日までこの様なエラーは発生しませんでした。エラーログよりお客様がこのサイトを一部編集した際に起きたので、予想外の使い方をされたのか?と思いヒアリングをしましたが、ただ記事ブロックを追加しただけとのことで、特に問題はない様な気がします。
もし何か気づきの点がありましたらぜひアドバイス塔お願いします。アメリカのC5フォーラムにも同様の質問を投げようと思っています。
以下サーバーのバージョン等です。
CentOS release 6.8 (Final)
Server version: Apache/2.2.15 (Unix)
PHP 5.4.45 (cli) (built: Aug 23 2016 14:41:13)
mysql 5.7.17
Concrete 5.7.5.13
・一部のページは「待機中」となりずっと見れない。
・静的書き出しなどは行っていない。
・一部のページは見れる。しかし重い
・サイトに複数人がアクセスするとかなり重くなる。最悪、サイトが応答しなくなる。
・ログインは何とかできる。
・ダッシュボードは重いがなんとか動く。サイトマップはシステムページを含めようとすると待機中となってしまう。
・Apacheのエラーログは以下の物が大量に出力される。
Failed loading opcache.so: opcache.so: cannot open shared object file: No such file or directory
[Thu Jul 16 16:51:44 2020] [notice] child pid 12360 exit signal Segmentation fault (11)
Posted on 7月 17, 2020 at 12:46 午前
|
5月3週目あたりにこちらのエラーで悩みました。chromeだけ、会社のwindowsPCのみで起きていて不思議だったのですが、chromeのアップデートによるエラーだったのですね。ありがとうございます。
PCやOSによる違いが出る場合ははchromeの自動更新の許可によるものだと思います。chrome83系にすると発生します。
私の方の症状としましては
・自作ブロック、concrete5純正ブロック全ての「保存」を行うと、空のエラーが発生する。
・しかし、DB上には保存され、ページ読み込みをするときちんと内容は反映される。
・ブロックの削除は普通に行える。
・記事ブロックの場合はページ操作が不可能になる。
・chrome developer tool consoleには特に何も表示されない。
そして検証としてchromeを83系にアップグレードをすると
concrete5.8,concrete5.7系にて同様なエラーが発生しました。
Posted on 5月 28, 2020 at 7:26 午後
|