DBが使うメモリが不足。DBクエリとphp-fpmの処理はお互いに影響し合うのでどっちが悪いというものでもありません。↓DBが十分なメモリを使えない。↓php-fpmの処理が遅くなりメモリが開放されない↓メモリ使用増メモリの総量は有限なので、DBとphp-fpmのメモリ配分がむずかしいです。(2年以上の運用経験談。)Webサーバーがエラーレスポンスを返すのも問題ですが、やっかいなのはデータベースで、メモリ不足が起きると強制シャットダウンします。(今のところDBサーバーの手動起動しかない。)プロセスの増大を抑えるチューニングそこで、設定のチューニングを変えました。細かい設定の説明は省略しますが、チューニングの内容はサイトの速度を犠牲にしてでもプロセスの増大を抑える。php-fpm、DBは処理するプロセスが足りなくなると数を増やします。(もちろんプロセスはメモリを食う。)その増やす分の数を初期設定より少なくしました。『できるだけ少ないプロセスでがんばってくれ。』ってことですね?そのほか、Webサーバーのキャッシュ機能も使っています。データベースのクエリキャッシュも増やしました。(キャッシュはファイル処理なので処理速度は落ちる。)KUSANAGIの設定から独自にチューニングするのはオススメしません。レベルでないと、まちがいなくKUSANAGI全体の性能が落ちます。ボクの場合、『メモリ2Gで月間数万PVに最適化』するための性能落ちは想定内です。KUSANAGIのデータベースはsystemdじゃないそれでも推奨メモリ以下なので限界があります。3ヶ月に1回程度、DBが落ちます。そこで落ちても自動でリカバリすればいいじゃんと考えました。systemdの設定はかんたんなので。残念なことが起きます。KUSANAGIのMariaDBはsystemdにサービス登録されていません。CentOS7では使わなくなったinit.dでのシェルからの起動です。systemdの操作コマンドsystemctlでも確認できます。full.CentOS7ではinit.dのサービスはsystemdにラッピングされます。systemdのサービスファイル(*.service)がありません。init.dでサービスを起動すると内部でsystemdのサービスに登録される。サービスファイルの作成まではしない。systemctlのLoadedがサービスファイルではなくinit.dのシェルになる。サービスファイルがあれば、その設定でDBが落ちたときに自動起動するリカバリ設定(Restart)ができるのですが、KUSANAGIではできません。init.dのシェルを改造することになるので断念しました。(独自のサービスファイル作成も考えたが、KUSANAGIアップデートに影響するので断念。)一番効果があるのはスワップチューニングにも限界がありsystemdで自動起動の設定もできず、結局一番効果があったのはスワップです。SSD)の一部をメモリとして使う機能で、『仮想メモリ増設』です。ディスクの読み書きはメモリとは比較にならないくらい時間がかかるのでサイト速度が落ちます。(ディスク読み書きでCPU利用率も大きくなる。)これを許すならひとつの手段でしょう。『メモリ増設すれば?』で終わる話ですが。(いままでの話がぜんぶ無意味...)KUSANAGIの推奨メモリ4Gを月額3,000円台で提供しているクラウドサーバーもあります。お金の面がクリアされるならメモリ増設が一番の方法です。(メモリ4Gなら大概のサイトは耐えられる。何より初期設定で処理が速い。データベースが落ちたときの対応KUSANAGI関連記事SNSでも記事を配信しています。AMKusanagiが使用してるmariadbはsystemd管理でmariadb.service名で登録されてます。systemdでの自動起動で上がってこない場合はmonitがデフォルトで動いているのでmariadbプロセスを監視させるように設定することをおすすめします。configureでサーバースペックに対するkusanagiの自動設定を試してください。configure実施後もphp-fpmのメモリ解放がうまく行かない場合はphp-fpmの設定を見直してください。pm.max_childrenを小さくする。pm.max_requestsを小さくしてメモリ解放を早めに行うなど。DBに関してもquery_cache_sizeやbufferサイズを見直すなど自分で触れるところは多いです。slow_queryをみつつチューニングを試してください。PMいろいろなご指摘ありがとうございます。dbキャッシュ、バッファ、etc...のことで、すでに実施済みです。configureはしてませんでした。使用します完了しました。~]#自分の環境ではずっと『mysql.service』です。ふつうmariadbのサービス名は『mariadb.service』だし、なんでmysqlなんだろ?って思ってたんですけど、ますます不思議。してinit.dのシェルなのかも。この環境は運用歴4年目に入ろうかというところなんですけど、いまのkusanagiとはちがうんですかね?といってもkusanagiのアップデートはしているのですが。PS.monitありました。聞いたことあったけど使ったことないので勉強していきます。*メールアドレス(公開されません。*このフォームを使用することにより、このウェブサイトによるデータの保管および取り扱いに同意するものとします。コメントデータの処理方法の詳細はこちらをご覧ください。(全16回)日本国憲法を読む。views今上天皇の読み方。Vol.3天皇の皇位継承の解決策は既にある。Vol.2天皇の男系・女系・双系の違い。Vol.14図で見りゃわかる。このサイトの使用を継続することで、その使用に同意したとみなされます。コントロール方法を含む詳細についてはこちらをご覧ください。(1)プロフィールシステムエンジニア&プログラマ。SIerに12年、フリーと会社員を交互に繰り返すこと4年。心疾患をわずらってしまい実家に戻って静養中。何もしないのはヤバいので、今まで得てきたものをWebサイトで発信しながら少しだけ活動中。静養しながらできることをして、迷走して、転んで、怪我してをくり返している。コメント等いただいておりますが、回答・回答は遅くなりがちです。(1週間以内で早い方。)20%くらいの力しか出せてないので、その点はご了承ください。コメント等のコミュニケーションは面と向かって話すのと同じだと思っています。初対面でいきなりケンカ腰で来られると、『いきなり刺されるかも?』と同じくらいに感じるので、100%レスポンスがあるとはかぎりません。そのエネルギーがないだけなんですが...くわしく見るSNSでも記事を配信しています。ただ屋ぁのブログ.topこの記事を気に入ったらぜひシェアも!!。