manhoo
1
さくらインターネットレンタルサーバーを利用しております。
12月19日からすべてのメールは受信しなくなりました。
本日さくらレンタルサーバーに確認すると、タイトルのディレクトリが肥大化になった原因が分かりました。
mysite_mail_contents以外のフォルダにも数百万のファイルがあります。
キャッシュを削除しても、10分間で数百のキャッシュが作成されています。
\app\Config\core.phpのキャッシュ設定は、こちらです。
Configure::write(‘Cache.disable’, true);
よろしくお願い申し上げます。
サーバキャッシュをオフにする設定、公式では以下の様です。
Configure::write(‘Cache.check’, true);
↓変更する
Configure::write(‘Cache.check’,false);
こちらで如何でしょうか?
同じ症状を経験してますが、Configure::write(‘Cache.check’,false); でもキャシュが増え続けます。
manhoo
4
ogredrumさんの方法で試した結果は、 agenta52さんと同じ変わらないです。
今現在、1日1回キャッシュを手動で削除しています。
昨日1日でmysite_mail_contentsだけで20万ファイルでした。
何かいい方法があれば、ぜひお願いいたします。
応急処置として、
/lib/Baser/Plugin/Mail/Model/MailContent.php 33行目付近を下記のように変更してください。
(変更前)
public $actsAs = array(‘BcSearchIndexManager’, ‘BcCache’, ‘BcContents’);
↓
(変更後)
public $actsAs = array(‘BcSearchIndexManager’, ‘BcContents’);
(読み込むビヘイビアより、BcCacheを削除した形となります)
これで、 app/tmp/cache/datas/mysite_mail_contents/ 下に大量のキャッシュファイルは生成されなくなるかと思います。
参考情報として伺いたいことがあるのですが、
・メールフォームに公開期間等を設定しておりますでしょうか?
・閲覧者数はどの程度のサイトでしょうか?(1日で何十万もキャッシュが生成されるので、気になりました)
manhoo
6
ご連絡ありがとうございます。
最初不正アクセスだと思いましたが、
mysite_mail_contentsだけじゃなくて、他のBlogにもあります。
2020/12/23 18:05:50~2020/12/24 7:22:08
/tmp/cache/datas/mysite_blog_contentsに、13933ファイル
/tmp/cache/datas/mysite_mail_contentsに、14337ファイル
/tmp/cache/datas/mysite_carsに、9775ファイル(自分作ったプラグインです)
/tmp/cache/models、28ファイル
/tmp/cache/views、84ファイル
参考情報
・メールフォームを常に公開しております。
・閲覧者数は1日10人以内程度です。
・自分作ったプラグインmysite_carsと関係あるかどうか分かりません。
ご提案のlib/Baser変更について、応急処置としてやってみます。
バージョンアップする時は手間かかるので、忘れた時また今の状態に戻るかもしれません。
よろしくお願い申し上げます。
GUSSAN
7
@manhoo 横からすいません。
キャッシュの件ですが、manhooさんのおっしゃるようにコンテンツごとに複数のフォルダ内の結構な数のキャッシュが確かに溜まります。
そもそもどういったタイミングでキャッシュが生成されるのかよくわかりませんが、キャッシュのタイムスタンプを見てみると、私の管理しているサイトでは、すごくざっくりですが1分に1回程度の数に収まっているように感じます。
実際には、1分回に5、6回キャッシュが生成されている場合もありますが、5分間くらい何もない時もありますので、ざっくり1分に1回程度の数かと。
で、キャッシュファイルの容量は、サイト毎にばらつきがあり、これはサイト毎で使用しているメールフォームの数やその他コンテンツの内容によるのかと思います。
Mailコンテンツの場合だと、メールフォームのフィールド数が多ければキャッシュのサイズも多くなるんだと思います。また、メールフォームの数が複数あれば、掛け算(キャッシュファイル内での掛け算なので結果としてファイルサイズが大きくなる要因という意味です)になると思います。そう言う事情で、ざっくり私の管理するサイト場合は、キャッシュファイル1ファイルあたり3kから15kくらいです。
という前提で、
Mailコンテンツを例にとって計算すると、
1分間1ファイル15k × 1時間60ファイル × 24時間 × 年間365日
とすると、
7884MBとなり、ざっくり8ギガ弱になります。
しかし、現実には、アップデート時や様々な場面でサーバーキャッシュをクリアしていますので、その時点で通常0になっています。
例えば、1ヶ月サイトを放置していれば、650MBくらいはキャッシュが貯まることになりますね。。。mailコンテンツだけで。
これも他のコンテンツと足し算すれば、それなりの容量になりそうです。
というのが、通常かと。
ですが、manhooさんの場合は、mailコンテンツだけで10分間で数百というのは、確かに異常な数字ですね。。。
もし複数のメールフォームを利用されているのであれば、一つ一つメールフォームを非公開状態にすれば、キャッシュを異常に生成しているフォームがわかるのかもしれません。
manhoo
8
大変参考になりました。
メールフォームは1つだけで、非公開すると停止直前のキャッシュが消えて、
1~4秒に1ファイルが生成されて、1分間20ファイル程度です。
公開すると非公開のキャッシュが消えて、非公開時のキャッシュと同じ程度です。
今現在:1~4秒に1ファイルが生成されて、1分間20ファイル程度です。
今おとなしくなったかもしれないですね。
☆FTPソフトからファイルの変動状態を見ています。
引用 昨日1日でmysite_mail_contentsだけで20万ファイルでした。
今冷静に考えると20万じゃなくて、2万?かもしれません。
慌ててバックアップを保存していないので、はっきり分からないです。
メールフォームを非公開しても同じ数のキャッシュが発生するのは疑問です。
暫く様子を見てみます。
また何かございましたら更新します。
皆様、ありがとうございました。
GUSSAN
9
まず、キャッシュのクリアは、手動でとおっしゃっていましたが、BaserCMSの管理画面上の「サーバーキャッシュ削除」をクリックすると削除できます。(この場合、うぬも言わさず全てのコンテンツのキャッシュが削除されますので、そこはご承知ください。ちなみに画像はadmin-secondの管理画面ですので)
で、現状分析されている、1分間に生成されるキャッシュファイルの数、20ファイル(一時的なら)が異常に多いのか?は、正直判断がつきませんが、なんとなく許容値なのかもしれませんね。。。
20ファイル × 10分間 → 200ファイル
先のコメントで、
と書きましたが、もしかしたら、異常な数字ではないのかもしれません。。。
その辺は、ほんとよくわかりません。。。ごめんなさい。
manhoo
10
GUSSANさん、本当に感謝いたします。
BaserCMSの管理画面上の「サーバーキャッシュ削除」を利用しています。
キャッシュを1ヶ月ほど放置して、結果を見てみます。
1日に数十万件になったら、改めて投稿いたします。
分析、考えられる原因など、その時またよろしくお願い申し上げます。
「いいね!」 1
GUSSAN
11
いえいえ、何かあればまた^^
この辺りの事情は、確かによくわからないところがあるので、暗中模索ですよね。。。
しかし、このキャッシュ生成機能が、そもそも、ユーザー側で有用かどうかはそれぞれの事情で変わるのかもしれませんね。
メンテナンス(システムの不具合対応)を考えれば、キャッシュファイルが手がかりになるケースもあるでしょうし、そもそも、キャッシュファイルが生成されることでイベントの解析をしたりなど、有用な目的はあるにせよ、その辺りの事情を考慮しつつ、メリットデメリットも理解した上で、キャッシュファイルを生成させるかさせないかをユーザーがチョイスできる管理側のインターフェースがあってもよいのかもしれませんね。
あるいは、定期的にキャッシュをクリアできるような設定など。。。
私は、ほんとうにちょくちょく「サーバーキャッシュ削除」をするので、こういうことに出くわす機会はほとんどないですがw
「いいね!」 2
manhoo さん
/app/Config/core.php の最後で /app/Config/install.php を読み込んでいるので、キャッシュのオン・オフ設定は install.php の方に書かないといけないのでは?と思いました。
false から true に書き換え
Configure::write('Cache.disable', true);
コメントアウト
// Configure::write('Cache.check', true);
コメントアウト
// Cache::config('default', array('engine' => 'File'));
上記の設定で、当方の環境(下記)ではキャッシュが生成されなくなりました。
- Ubuntu 18.04.5 LTS
- nginx 1.19.6
- PHP 7.4.13
- MariaDB 10.4.17
manhoo
13
Tecking さん
確かにキャッシュが生成されなくなりましたね。
暫くこのまま利用させていただきます。
ありがとうございました。
また何かございましたら、投稿させていただきます。
tecking
14
manhoo さん
キャッシュ生成されなくなって、ひとまず解決といったところでしょうか。
baserCMS公式のWiki、編集しておいた方がよさそうですね(編集しておきます)。
「いいね!」 1
manhoo
15
Teckingさん
一応解決できました。
baserCMS公式のWikiも修正できるか、初めて知りました。
色々な対応ありがとうございました。
またよろしくお願いいたします。
ありがとうございました!
そうでした、install.phpでオーバーライドされていましたね。
更新もありがとうございます!
キャシュが生成されなくなりました。
ありがとうございました。
「いいね!」 1