Назад | Перейти на главную страницу

Лак и недостаточный объем оперативной памяти

У меня есть один выделенный сервер для Varnish, который обслуживает десятки тысяч статических файлов. Этот сервер имеет 32 ГБ оперативной памяти. Эти файлы занимают почти всю оперативную память, подавляющее большинство из них также используется регулярно, поэтому я стою перед проблемой - что делать. Сервер легко справляется с обработкой запросов, но количество обслуживаемых файлов постоянно увеличивается, и в любой момент я столкнусь с проблемой оперативной памяти. Добавление дополнительной оперативной памяти не является вариантом, как и сохранение части данных на жестком диске.

Решил поставить дополнительный сервер с такими же параметрами. Я хотел бы распределить данные между двумя серверами. Оба сервера будут работать с HAProxy.

Поскольку объем данных, хранящихся в кеше, очень быстро растет и их ротация, мне нужно решение, которое позволит мне автоматически распределять данные на обоих серверах. Например:

Varnish1 обрабатывает участок S1, S3, S5
Varnish2 обрабатывает участок S2, S4, S6

В тот момент, когда появится страница S7, должна автоматически добавиться наименее загруженный сервер. Аналогичным образом, когда сайт исчезнет, ​​например, S2, данные следует перераспределить по серверам для достижения наиболее сбалансированной нагрузки. То же самое должно происходить и во время нормальной работы серверов, когда один сайт, такой как S1, внезапно потребляет гораздо больше ресурсов, чем обычно, сервер должен автоматически передавать часть поддерживаемых данных на другие серверы. Я принимаю частичную репликацию, т. Е. Когда количество запросов, таких как S1, увеличивается до такой степени, что один сервер забивается, данные должны быть немедленно реплицированы на другой сервер.

Я прогнозирую, что в будущем количество обслуживаемых данных увеличится в несколько раз, а также количество серверов Varnish, поэтому я не могу полагаться на портативные решения.

Я с Шейном Мэдденом. Это сложный вопрос. Вот некоторые мысли:

Пересмотреть диски

Еще раз подумайте об использовании дисков для кэша Varnish. Добавление диска может быть проще, чем добавление ОЗУ; чем быстрее диски вы можете себе позволить, тем лучше. Производительность будет падать, но для обычного пользователя это может быть незаметно. Довольно успешно мы использовали диски с лаком. Еще одно преимущество дисков: если вы, например, идете по маршруту NAS, вы можете смонтировать этот NAS на разных серверах, чтобы не беспокоиться о синхронизации файлов на разных серверах.

HAProxy

С прокси-сервером вы можете перенаправлять трафик, но в конце концов вы столкнетесь с той же проблемой - нехваткой оперативной памяти или дискового пространства.

Отвернись от лака

Возможно, пришло время рассмотреть другое решение, кроме Varnish. Может быть, CDN? Что может или не может удовлетворить ваши потребности, но вы можете выгрузить некоторые из часто используемых файлов на CDN и, если они используются реже, доставить их со своих серверов.

HTH и удачи!

Первое, что нужно сделать, это проверить, обрабатываете ли вы Vary Заголовок HTTP правильно. Это чрезвычайно важно, потому что при неправильной обработке вы можете получить несколько копий одного и того же объекта кэша, которые являются только отдельными копиями из-за неправильного заголовка HTTP.

Что вы получаете, когда бежите curl -I http://yourhost.com/path/to/a/static/file.ext ?