В IT-инфраструктуре Discourse при резервном копирования сайта один GIF-файл скопировался 246 173 раза
Технический блогер Discourse Джейк Голдсборо рассказал, что при резервном копирования сайта один GIF-файл, который весит 1,6 МБ, был продублирован 246 173 раза, что добавило 377 ГБ к квоте резервного копирования веб-сайта, повредив файловую систему Linux и вызвав сбой самого процесса.
Речь идёт о гифке с героиней Рейчел из сериала «Друзья» и её танцем радости, который часто используется в чатах Discourse. Проблема, вероятно, была вызвана, чрезмерным использованием этого файла, а также внедрением политики безопасности файлов.
Discourse — это компания и проект с открытым исходным кодом, создающий одну из самых широко используемых современных платформ для обсуждений в сообществах, которая в настоящее время поддерживает более 22 тысяч форумов. Платформа для чата в реальном времени позволяет пользователям вставлять эмодзи и GIF-файлы в свои обсуждения, чтобы оживить дискуссии. Но функция «безопасной загрузки» платформы означает, что «когда файл перемещается между контекстами безопасности (например, из личного сообщения в публичную публикацию), система создаёт новую копию со случайным SHA1», объясняет Голдсборо. Таким образом, исходное содержимое идентично, но Discourse рассматривает его как новый файл. В итоге популярное изображение или GIF-реакция распространяется по постам, репостам и личным сообщениям, и каждый контекст создаёт ещё одну копию файла.
Первая попытка Discourse решить проблему перегрузки системы дубликатами заключалась в отслеживании оригинального контента по его хешу. Затем, во время резервного копирования, загрузки группировались по хешу, и загружался только первый файл в каждой группе. Для всех дубликатов создавались жёсткие ссылки. Это казалось решением, пока один из крупных клиентов Discourse не обратил
Читать на habr.com