nginxのキャッシュが勝手に消える([crit] 8250#0: unlink() "FILE NAME" failed (2: No such file or directory)

  • 1
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

nginxで勝手にproxy_cacheのファイルが消えてました。
そして、キャッシュファイルを複数サーバーで共有(同期)していたことが原因で、以下のエラーにぶち当たりました。

[crit] 8250#0: unlink() "FILE NAME" failed (2: No such file or directory)

unlink() "FILE NAME" failed (2: No such file or directory)

「キャッシュ消そう(unlinkしよう)と思ったけど、そんなファイルないよ」って言ってます。
これは、以下の流れで発生したと思われます。

  1. サーバーAでキャッシュ消す
  2. キャッシュ同期
  3. サーバーBでキャッシュ消そうとする
  4. unlink failedエラー

対応方法

そもそもキャッシュが消えるのがおかしい。なぜだ?と思ったら、キャッシュファイルの上限値を超えてたのが原因でした。
proxy_cache_pathmax_sizeを引き上げることで対応できました。
この時dfなどで空容量を把握しておかないと、数時間後に「ディスク容量がない」系のエラーで怒られます

proxy_cache_path  /var/cache/nginx/proxy_cache levels=1:2 keys_zone=ゾーン名:ゾーン上限 max_size=キャッシュ上限;