Laravelアプリケーションによるストレージ肥大化を回避する勘所

ストレージ肥大化については

  • Cacheの定期的な削除
  • ログファイルの出力をdailyに変更

を対応すれば大抵は問題なくなります。

Cacheの定期的な削除

LaravelにはありがたいことにCache機構がすでに備わっているので便利に使用させてもらっています。

https://laravel.com/docs/10.x/cache

一時的なデータ保存が必要な場合などにMySQLを使うまでも無い時や、処理が膨大になるため軽量化の手段として多用しています。

LaravelのCacheの推奨環境はMemcachedやRedis環境ですが、レンタルサーバーの環境では対応されていなかったり、そもそもデフォルトの保存先であるfileストレージで十分なのでそのまま使用していました。

ですが、fileストレージでのCacheを使用しているとストレージが肥大化してしまいます。storage/framework/cache/ 配下が肥大化している場合はこのCacheが原因です。

LaravelのCacheドライバは保存期間の指定はできますが、過去のCacheの削除までは自動では対応してくれていないためです。

対策としてはキャッシュクリアのコマンドを実行させましょう

php artisan cache:clear

定期的に実行させたい場合にはCommand設定に書く以下の通り

$schedule->command('cache:clear')->cron('3 3 * * *');

ログファイルの出力をdailyに変更

エラーログの出力は storage/logs/laravel.log に出力されますが、デフォルト設定のままだとこの1ファイルに全期間のログが出力されつづけるので肥大化していきます。

.env で以下の設定にすれば1日1ファイルで出力されるようになります。

LOG_CHANNEL=daily
$ ls -1 storage/logs/laravel-*
storage/logs/laravel-2023-05-31.log
storage/logs/laravel-2023-06-01.log
storage/logs/laravel-2023-06-02.log
storage/logs/laravel-2023-06-03.log
storage/logs/laravel-2023-06-04.log
storage/logs/laravel-2023-06-05.log
storage/logs/laravel-2023-06-06.log
storage/logs/laravel-2023-06-07.log
storage/logs/laravel-2023-06-08.log
storage/logs/laravel-2023-06-09.log
storage/logs/laravel-2023-06-10.log
storage/logs/laravel-2023-06-11.log
storage/logs/laravel-2023-06-12.log
storage/logs/laravel-2023-06-13.log

https://laravel.com/docs/10.x/logging

以上、お疲れ様でした。

投稿者


Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA