Просматриваю посты, нашёл пост годичной давности с набором полезных команд для настройки дедика. Вроде там всё нужное перечислено, за год ничего нового по этой теме не набралось. Зато за это время понял, как можно кардинально увеличить производительность скриптов. Все операции чтения-записи файлов по возможности лучше перекинуть на виртуальный диск в памяти. Включая откладывание личинки в логи и т.п., даже самые мелкие операции. При этом сразу встаёт проблема – как бороться с тем что диск быстро забивается? Если у вас большие файлы, то никак, можно даже не стараться. Но если у вас есть много мелких файлов, в которые надо много читать-писать, то использование tmpfs может сильно ускорить работу сервера. А сами файлы можно “интеллектуально” скидывать на жёсктий диск.

Например, если tmpfs забит на 50% или меньше то не делать с файлами ничего, если забит больше чем на 50%, то все файлы к которым не обращались дольше 30 минут – скидывать на их положенные места на обычном диске. Если виртуальный диск забит на 75%, то скидывать все файлы старше 5 минут. Таким образом на временном диске в памяти будут храниться только файлы к которым чаще всего обращаются скрипты, а если скрипту нужен файл который лежит на обычном диске – его можно подгружать в tmpfs и использовать оттуда.

Скорей всего это уже изобретенный велосипед, сама юниксовая файловая система работает похоже, но количество файлов которое там кешируется не сравнимо с тем что можно запихнуть на виртуальный диск. Может в линуксе это как-то настраивается, но обычному юзверю (мне) найти эти настройки не удалось. Дополнительный бонус – подход с тмпфс будет работать на большем числе систем, поскольку он системно независим.

Ещё одна интересная особенность линукса, которую можно использовать для повышения производительности - если вам надо что-то записать в файл, то запись без предварительного чтения происходит гораздо быстрее, то есть если у вас формат файла позволяет только писать в него, не читая, то это может дать прирост производительности. Если же у вас в файле например лежит сериализованный массив, который надо сначала прочитать, потом подправить и снова записать, то большое количество таких файлов будет снижать возможности скрипта вплоть до сакраментальных “150 файлов в секунду”, о который говорил любитель коньяка из Яндекса.

Похожие посты