Большое кол-во мелких файлов на сервере

1 23
D
На сайте с 20.05.2001
Offline
311
#21
Outsourcenow:

Но самый правильный вариант - переписать движки. Идея обходить при каждом дерганье скрипта стопицот каталогов - порочна, и никакое кэширование не спасет.

Наверное так и надо было делать, но все хочется жить хорошо не напрягаясь. :)

А что с делать с картинками, например в директории их 100к, имеет смыл их рассовывать по разным директориям или в современных ОС уже пофиг.

M
На сайте с 16.09.2009
Offline
278
#22
Drow:
А что с делать с картинками, например в директории их 100к, имеет смыл их рассовывать по разным директориям или в современных ОС уже пофиг.

Как правило, пофиг.

Может быть полезно использовать специфичные для файловой системы оптимизации. Например, dir_index в ext3.

Абонементное сопровождение серверов (Debian) Отправить личное сообщение (), написать письмо ().
O
На сайте с 13.08.2008
Offline
26
#23
adm.unix:
Расскажите, поделитесь опытом. Сейчас баз такого объема у нас нет, но интересно знать какие подводные камни бывают

Подводный камень ровно один - райзер с периодичностью раз в месяц разносит в кашу. То есть совсем - похоже, рассыпаются цепочки инодов, и раздел можно переформатировать :-)

Outsourcenow.ru: оттюним ваш веб-сервер. 100 млн. запросов в сутки - наш размерчик!
M
На сайте с 16.09.2009
Offline
278
#24
Outsourcenow:
Подводный камень ровно один - райзер с периодичностью раз в месяц разносит в кашу. То есть совсем - похоже, рассыпаются цепочки инодов, и раздел можно переформатировать :-)

Эмм.... И как оно тогда проработало _больше_ месяца ("периодичность")? Вся база 8Tb - какой-то

кеш что-ли, т.е. на данные, в общем, пофиг?

O
На сайте с 13.08.2008
Offline
26
#25
Drow:
А что с делать с картинками, например в директории их 100к, имеет смыл их рассовывать по разным директориям или в современных ОС уже пофиг.

Раскидывать в обязательном порядке.

Дело не в дряхлости/современности ОС. Дело в том, что кэш имен файлов - он работает per-directory. И это просто обычная табличная структура.

По которой, конечно, выполняется поиск - ну а чем больше записей в таблице, тем медленнее работает открытие файла.

fopen() в каталоге с 10к файлов будет работать, условно, на 50-100 мкс быстрее, чем в каталоге с 100к файлов. На 1к rps это даст уже потери в порядка 0.5 сек.

Цифры очень условные, зависят, понятное дело, от fs, от нагрузки дисковой подсистемы, итп. В реальности, кстати, могут быть еще больше.

Да, хочу заметить - это все без учета именно _поиска_ файла, то бишь дерганья всяческих readdir(). Если в коде есть обход всего дерева каталогов - то в среднем на 50-60 тыс. файлов уже наступает коллапс.

Outsourcenow добавил 01.10.2009 в 17:19

myhand:
Эмм.... И как оно тогда проработало _больше_ месяца ("периодичность")? Вся база 8Tb - какой-то кеш что-ли, т.е. на данные, в общем, пофиг?

А так и работало - раз в месяц руками переключалось на следующий слейв, а умерший переливался заново.

Unlock
На сайте с 01.08.2004
Offline
786
#26

А что это проблема - большое количество файлов? У меня на сервере в общей сложности 400K картинок небольших и вроде никаких проблем нет.

Есть желание, - тысяча способов; нет желания, - тысяча поводов! /Петр-I/.
1 23

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий