« Авторегалки | Где лучше покупать домены »
Просматриваю посты, нашёл пост годичной давности с набором полезных команд для настройки дедика. Вроде там всё нужное перечислено, за год ничего нового по этой теме не набралось. Зато за это время понял, как можно кардинально увеличить производительность скриптов. Все операции чтения-записи файлов по возможности лучше перекинуть на виртуальный диск в памяти. Включая откладывание личинки в логи и т.п., даже самые мелкие операции. При этом сразу встаёт проблема – как бороться с тем что диск быстро забивается? Если у вас большие файлы, то никак, можно даже не стараться. Но если у вас есть много мелких файлов, в которые надо много читать-писать, то использование tmpfs может сильно ускорить работу сервера. А сами файлы можно “интеллектуально” скидывать на жёсктий диск.
Например, если tmpfs забит на 50% или меньше то не делать с файлами ничего, если забит больше чем на 50%, то все файлы к которым не обращались дольше 30 минут – скидывать на их положенные места на обычном диске. Если виртуальный диск забит на 75%, то скидывать все файлы старше 5 минут. Таким образом на временном диске в памяти будут храниться только файлы к которым чаще всего обращаются скрипты, а если скрипту нужен файл который лежит на обычном диске – его можно подгружать в tmpfs и использовать оттуда.
Скорей всего это уже изобретенный велосипед, сама юниксовая файловая система работает похоже, но количество файлов которое там кешируется не сравнимо с тем что можно запихнуть на виртуальный диск. Может в линуксе это как-то настраивается, но обычному юзверю (мне) найти эти настройки не удалось. Дополнительный бонус – подход с тмпфс будет работать на большем числе систем, поскольку он системно независим.
Ещё одна интересная особенность линукса, которую можно использовать для повышения производительности - если вам надо что-то записать в файл, то запись без предварительного чтения происходит гораздо быстрее, то есть если у вас формат файла позволяет только писать в него, не читая, то это может дать прирост производительности. Если же у вас в файле например лежит сериализованный массив, который надо сначала прочитать, потом подправить и снова записать, то большое количество таких файлов будет снижать возможности скрипта вплоть до сакраментальных “150 файлов в секунду”, о который говорил любитель коньяка из Яндекса.
3 Responses
September 6th, 2008 at 06:17:38
// php gravatar() ?>1это (интеллектуальное сбрасывание на диск) похоже на гагловскую бигтабле получается
кстати в ней хранят не только всякие таблицы, но и кучу мелких файлов, тумбы ютюба например.
September 6th, 2008 at 15:28:38
// php gravatar() ?>2zhengxi, я не знаю как работает гугловский прибамбас, но собственный линуксовый кеш работает примерно также, pdflush скидывает устаревшие данные на диск. Проблема в том, что неюниксоиду в этом разобраться довольно проблематично, плюс под разными видами юниксов это по разному работает.
September 7th, 2008 at 04:09:01
// php gravatar() ?>3Пытался оставить со своего десктопа умный и длинный комментарий, не удалось. Использовал IE, FF, Chrome. Сейчас пробую IE с лаптопа.
RSS feed for comments on this post · TrackBack URI
Написать комментарий
Про что писал
Календарь
Куйворды
Архив
Подписка на блог
Статистика подписки
Страницы
Комментарии
Последние посты
Blogroll
Счётчики