Процесс очистки кэша прокси Nginx не очищает элементы достаточно быстро для новых элементов - PullRequest
0 голосов
/ 04 октября 2019

У нас есть nginx, стоящий перед нашим хранилищем объектов, который кэширует большие объекты. Объекты размером до 100 ГБ. Максимальный размер кэша nginx составляет около 3,5 ТБ.

При большом количестве запросов больших объектов и быстром заполнении диска nginx сталкивается с проблемой нехватки места на диске. Я ожидал, что менеджер кэша очистит элементы на основе LRU и освободит место для новых элементов, но этого не произойдет.

Я могу воспроизвести проблему с помощью простого контрольного примера:

Config:

proxy_cache_path / tmp / cache cache = 1: 2 keys_zone = cache_one: 256m неактивно = 2d max_size = 16G use_temp_path = off;

Тест:

  1. Выполнитьзапрос на загрузку файла объемом 15 ГБ, он обслуживается корректно и сохраняется в кеше.
  2. Запустите второй запрос на загрузку другого файла объемом 10 ГБ, он не будет работать примерно так:
2019/10/04 11:49:08 [crit] 20206#20206: *21 pwritev() "/tmp/cache/9/fa/a301d42ca6e5d4188c38ecf56aa3afa9.0000000001" has written only 221184 of 229376 while reading upstream, client: 127.0.0.1, server: eos_cache_filer, request: "GET...
2019/10/04 12:07:29 [crit] 21201#21201: *487 pwrite() "/tmp/cache/9/fa/a301d42ca6e5d4188c38ecf56aa3afa9.0000000002" failed (28: No space left on device) while reading upstream, client: 127.0.0.1, server: eos_cache_filer, request: 

Могу ли я настроить некоторые параметры cache_manager, чтобы это работало? Есть ли способ отключить буферизацию в таком случае - в идеале загрузка не должна завершиться неудачей, она должна просто отключить кеширование и буферизацию.

1 Ответ

0 голосов
/ 16 октября 2019

Query ответил на форуме nginx: https://forum.nginx.org/read.php?2,285896

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...