Как организовать кеш в памяти сервера для отдачи статики с HDD?
Используется nginx для отдачи картинок. Картинки как превью, так и полноразмерные. Сжимать на лету не нужно, все уже нарезано.
У сервера два HDD по 500 Gb и 64 Gb памяти.
Пишут, что для nginx под такую задачу достаточно 16 Gb памяти (ну, максимум,32 Gb), а вот из-за наличия множества мелких файлов при увеличении числа посетителей производительность упрется в дисковый I/O.
Рекомендуют организовать отдачу наиболее посещаемых из кеша. Поскольку памяти много, это целесообразно.
В качестве кеша, как правило, предлагается memcached, с примечанием, что nginx писать в него не умеет.
Во всех примерах описываются LAMP/LEMP конфигурации и объекты в memcached, ложит, соответственно, PHP, а Nginx только считывает.
У меня же PHP на сервере не используется. А память использовать хочется.
Другая рекомендация -Varnish, его вешают на 80 порт, перед/или за nginx, и настраивают на кеширование всего отдаваемого. Но - по Varnish отзывы двоякие, есть мнение, что статику Nginx отдает вполне неплохо, и Varnish не способен это улучшить, но как тогда быть с дисковыми I/O ?
Подскажите, стоит ли использовать Varnish, или все же классический Memcached, но как им тогда управлять?
крайне сомнительно что он у вас уперся в файловую подсистему, тут проще поковырять настройки нгинкса для отдачи, а не маяться глупостями. Линукс сам положит частозапрашиваемые картинки в память без участия нгинкса и вас.