Флешка в помощь веб-серверу или ReadyBoost для Ubuntu Linux

Многие из админов задаются вопросом, а может ли USB(MMC/SD…) флешка увеличить скорость работы веб-сервера. И если может, то что для этого нужно сделать?

Я задал этот вопрос на хабре, но конструктивного ответа так и не получил. Недавно в мое распоряжение поступил неттоп, который необходимо было превратить в веб-сервер. Памяти там – 4Gb, и я думал, как бы оптимальнее использовать флешку. Вначале я создал на ней 16Gb Swap-раздел. На HDD тоже был swap-разделб но с меньшим приоритетом. Т.е. как только система начинает сваппиться, она делает это на флешку, когда заканчивается раздел на неё, то уже на hdd. Нагрузил систему, и понял что она даже не сваппиться на него, пямяти хватает. В итоге научить сваппиться её у меня так и не получилось (я тюнил nginx и php5-fpm).

Потом я решил уменьшить swap-раздел до 4Gb, а на остальном месте сделал логический раздел, куда в последствии поместил наш веб-сайт. Дальше дело техники и двух симлинков. Вам же я хочу представить результаты нагрузочного тестирования.

Тест N1:  байткод кэшер(APC) выключен, сайт на HDD

Тест N 2: байткод кэшер(APC) выключен, сайт на флешке

Теперь включим байткод кэшер и посмотрим на результаты.

Тест N 3: байткод кэшер(APC) включен, сайт на флешке

Тест N 4: байткод кэшер(APC) включен, сайт на флешке

Выводы

Когда сайт байткод кэшер выключен и размещён на HDD скорость обработки запросов составляет 2,02 запроса в секунду, когда на флешке – 3,55. Ускорение на 75%.

Когда байткод кэшер включен, то разрыв становится кораздо меньше. 5,52 для HDD, 6,02 для флешки. Ускорение – 9% Оно и понятно, ведь в этом случае уменьшаются и обращения к диску (флешке).

Безопасность

Надо понимать, что флешка – ненадежный ресурс. Она может внезапно выйти из строя, могут закончиться циклы перезаписи или случиться ещё что-нибудь. Поэтому:

– Помещайти на флешку файлы, которые меняются редко. Например, движок сайта на php вполне подходит, т.к. сессии хранятся в БД, кэш в memcached, а файлы сайта меняются только при деплое.

– Используйте отложенную запись при монтировании флешки. Этим вы сократите количество циклов перезаписи.  Отключите обновление даты последнего доступа к файлу и директории, также позвольте системе кешировать операции записи на диск. Для этого монтируем файловую систему со следующими опциями: async,nodiratime,noatime,barrier=0. (‘barrier=0’ неоправданный риск, если на этом же разделе находится база данных)

Отключите access_log у Nginx

– Можно увеличить таймаут между сбросом «грязных» буферов vm.dirty_writeback_centisecs в /etc/sysctl.conf. У меня установлено vm.dirty_writeback_centisecs = 15000

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

– Создайте для флешки исключение в /etc/updatedb.conf. Добавьте /media/flash (точка монтирования) в PRUNEPATHS

– Приминение клиентской оптимизации: css-спрайты, все css — в один файл, все js — в один файл

– Эти тесты учитывали только скорость загрузки самого php файла, но не скорость отдачи статики. С флешки статика отдается быстрее, чем с HDD.

– Не доверяйте чужому мнению, проводите свои тесты для своей ситуации, чтобы выяснить, а надо ли оно вам 🙂

4 Comments

  1. Windows Defender по умолчанию включён. Эта утилита призвана защитить вашу систему от вредоносных и шпионских программ, которые занесены в “чёрные списки” Microsoft. Но для полной защиты всё же следует установить антивирус.

Leave a Comment