Большие веб-сайты могут быть "загрузкой, сбалансированной" через несколько машин. Во многих загружают сбалансированные установки, пользователь может поразить любую из машин бэкенда во время сессии. Из-за этого много методов существуют, чтобы позволить многим машинам совместно использовать сеансы пользователя.
Выбранный метод будет зависеть от стиля выравнивания нагрузки, используемого, а также доступность/способность устройства хранения данных бэкенда:
Информация сессии, хранившая в cookie только: информация Сессии (не только идентификатор сессии) хранится в cookie пользователя. Например, cookie пользователя мог бы содержать содержание их делающей покупки корзины. Для предотвращения пользователей, вмешивающихся в данные сессии, HMAC может быть обеспечен наряду с cookie. Этот метод, вероятно, наименее подходит для большинства приложений:
Подсистема балансировки нагрузки всегда направляет пользователя к той же машине: Много подсистем балансировки нагрузки могут установить свои собственные сеансовые куки, указав, от какой машины бэкенда пользователь выполняет запросы, и направьте их к той машине в будущем. Поскольку пользователь всегда направляется к той же машине, совместное использование сессии между несколькими машинами не требуется. Это может быть хорошо в некоторых ситуациях:
Общая база данных бэкенда или хранилище ключа/значения: информация Сессии хранится в базе данных бэкенда, которая все веб-серверы имеют доступ к запросу и обновлению. Браузер пользователя хранит cookie, содержащий идентификатор (такой как идентификатор сессии), указывая на информацию о сессии. Это - вероятно, самый чистый метод трех:
В целом, наиболее динамические веб-приложения выполняют много запросов базы данных или запросов хранилища ключа/значения, таким образом, хранилище базы данных или ключа/значения является логическим местом хранения данных сессии.
Однако, когда я выполняю PS aux, использование памяти всех процессов только выходит к 295.9 МБ, который находится на далеком расстоянии от 1.7 ГБ памяти что бесплатные отчеты, как используется.
Почему там такое несоответствие?
Поскольку управление памятью Linux является просто дурацким?
Шутки в стороне, серьезно - управление памятью в Linux не является простым зверем. Существуют различные способы "просмотреть" то, что "Свободно" и "Используется", и даже самое очевидное число не могло бы быть настолько очевидным, после того как Вы изучаете его. Я думаю, что Вы могли бы хотеть определить количество того, что Ваше определение "используемых", и затем примените то определение числам, Вы смотрите на, особенно относительно какой числа Ваше использование.
Вы принимаете во внимание общую память? В зависимости от того, как Вы считаете "используемыми", память программы может быть маленькой или очень, намного больше. Вы считаете общую память отдельно, или как будто каждый процесс, присоединенный к ней, владеет ею?
Общие библиотеки могут также иметь то же поведение: загрузки программы библиотека (libmylibrary.so), который совместно используется с другой программой. Одно представление памяти говорит, что библиотека не рассчитывает к памяти используемый; другое представление говорит, что не только делает, но и оно будет считать его дважды - однажды для программы, которая просто использовала его и снова для программы, которая уже использовала его, потому что для каждой программы будет нужна виртуальная память, отображающаяся для библиотеки для работы. Третье представление говорит, что библиотека действительно занимает только память, которая была необходима для загрузки его. Какой является "корректным" представлением памяти?
Дисковый кэш / буферы может также создать сложные представления того, что и не "используется" по сравнению со "свободным". Система израсходует память, которая не используется программами, но если ей нужна память для загрузки программы, кэш отбрасывается и снова используется для загрузки экземпляра той программы. Вам можно было легко загрузить только 3 мегабайта кода в памяти, но использовать 600 мегабайтов дискового кэша. Снова, какой является "корректным" представлением?