Использование памяти на поле Linux не совпадает со 'свободным'

Большие веб-сайты могут быть "загрузкой, сбалансированной" через несколько машин. Во многих загружают сбалансированные установки, пользователь может поразить любую из машин бэкенда во время сессии. Из-за этого много методов существуют, чтобы позволить многим машинам совместно использовать сеансы пользователя.

Выбранный метод будет зависеть от стиля выравнивания нагрузки, используемого, а также доступность/способность устройства хранения данных бэкенда:

Информация сессии, хранившая в cookie только: информация Сессии (не только идентификатор сессии) хранится в cookie пользователя. Например, cookie пользователя мог бы содержать содержание их делающей покупки корзины. Для предотвращения пользователей, вмешивающихся в данные сессии, HMAC может быть обеспечен наряду с cookie. Этот метод, вероятно, наименее подходит для большинства приложений:

  • Никакое устройство хранения данных бэкенда не требуется
  • Пользователь не должен поражать ту же машину каждый раз, таким образом, выравнивание нагрузки DNS может использоваться
  • Нет никакой задержки, связанной с получением информации о сессии от машины баз данных (поскольку этому предоставляют Запрос HTTP). Полезный, если Ваш сайт является загрузкой, сбалансированной машинами на различных континентах.
  • Объем данных, который может быть сохранен на сессии, ограничен (4K пределом размера cookie)
  • Шифрование должно использоваться, если пользователь не должен мочь видеть содержание их сессии
  • HMAC (или подобный) должен использоваться для предотвращения пользовательского вмешательства данных сессии
  • Так как данные сессии не являются сохраненной стороной сервера, для разработчиков более трудно отладить

Подсистема балансировки нагрузки всегда направляет пользователя к той же машине: Много подсистем балансировки нагрузки могут установить свои собственные сеансовые куки, указав, от какой машины бэкенда пользователь выполняет запросы, и направьте их к той машине в будущем. Поскольку пользователь всегда направляется к той же машине, совместное использование сессии между несколькими машинами не требуется. Это может быть хорошо в некоторых ситуациях:

  • Обработка сессии существующего приложения, возможно, не должна быть изменена для становления несколькими знающая машина
  • Никакая общая система баз данных (или подобный) не требуется для хранения сессий, возможно увеличивая надежность, но за счет сложности
  • Потеря работоспособности машины бэкенда удалит любые сеансы пользователя, запущенные на нем с ним.
  • Выведение из обслуживания машин является более трудным. Пользователям с сессиями на машине, которая будет удалена для обслуживания, нужно разрешить выполнить их задачи, прежде чем машина будет выключена. Для поддержки этого веб-подсистемы балансировки нагрузки могут иметь функцию для "истощения" запросов к определенной машине бэкенда.

Общая база данных бэкенда или хранилище ключа/значения: информация Сессии хранится в базе данных бэкенда, которая все веб-серверы имеют доступ к запросу и обновлению. Браузер пользователя хранит cookie, содержащий идентификатор (такой как идентификатор сессии), указывая на информацию о сессии. Это - вероятно, самый чистый метод трех:

  • Пользователь никогда не должен быть подвергнутым хранившей информации сессии.
  • Пользователь не должен поражать ту же машину каждый раз, таким образом, выравнивание нагрузки DNS может использоваться
  • Один недостаток является узким местом, которое может быть помещено в то, какой бы ни система хранения бэкенда используется.
  • Информация о сессии может истечь и последовательно сохраняться.

В целом, наиболее динамические веб-приложения выполняют много запросов базы данных или запросов хранилища ключа/значения, таким образом, хранилище базы данных или ключа/значения является логическим местом хранения данных сессии.

5
задан 20 May 2010 в 01:03
1 ответ

Однако, когда я выполняю PS aux, использование памяти всех процессов только выходит к 295.9 МБ, который находится на далеком расстоянии от 1.7 ГБ памяти что бесплатные отчеты, как используется.

Почему там такое несоответствие?

Поскольку управление памятью Linux является просто дурацким? A very large graph of linux innards laid out in all their glory

Шутки в стороне, серьезно - управление памятью в Linux не является простым зверем. Существуют различные способы "просмотреть" то, что "Свободно" и "Используется", и даже самое очевидное число не могло бы быть настолько очевидным, после того как Вы изучаете его. Я думаю, что Вы могли бы хотеть определить количество того, что Ваше определение "используемых", и затем примените то определение числам, Вы смотрите на, особенно относительно какой числа Ваше использование.

  1. Вы принимаете во внимание общую память? В зависимости от того, как Вы считаете "используемыми", память программы может быть маленькой или очень, намного больше. Вы считаете общую память отдельно, или как будто каждый процесс, присоединенный к ней, владеет ею?

  2. Общие библиотеки могут также иметь то же поведение: загрузки программы библиотека (libmylibrary.so), который совместно используется с другой программой. Одно представление памяти говорит, что библиотека не рассчитывает к памяти используемый; другое представление говорит, что не только делает, но и оно будет считать его дважды - однажды для программы, которая просто использовала его и снова для программы, которая уже использовала его, потому что для каждой программы будет нужна виртуальная память, отображающаяся для библиотеки для работы. Третье представление говорит, что библиотека действительно занимает только память, которая была необходима для загрузки его. Какой является "корректным" представлением памяти?

  3. Дисковый кэш / буферы может также создать сложные представления того, что и не "используется" по сравнению со "свободным". Система израсходует память, которая не используется программами, но если ей нужна память для загрузки программы, кэш отбрасывается и снова используется для загрузки экземпляра той программы. Вам можно было легко загрузить только 3 мегабайта кода в памяти, но использовать 600 мегабайтов дискового кэша. Снова, какой является "корректным" представлением?

9
ответ дан 3 December 2019 в 01:16

Теги

Похожие вопросы