Люди правильно сказали, что сессия содержит ряд тяжелых объектов. При достаточном количестве пользователей в вашей системе, если вы попытаетесь удержать их всех в ограниченном объеме памяти, который есть у сервера, в конечном итоге вы сломаете сервер, когда эта память иссякнет.
Однажды я работал над проектом, в котором обновление производственного кода имело утечку памяти. Это был проект J2EE (да, J2EE, а не Java EE). Когда пользователь вошел в систему, чтобы проверить свой счет в этой телефонной компании, сеанс пользователя не был должным образом освобожден из памяти (я не могу вспомнить причину, но это определенно было проблемой). Эта ошибка имитирует то, что вы спрашиваете о том, чтобы делать это намеренно.
Сервер продолжал падать. Поэтому ставим на него профайлер. Мы наблюдали, как использование памяти увеличивалось в течение дня, пока оно не достигало максимума, и вскоре после сбоя сервера приложений. Мы добавили памяти и увеличили параметр памяти ВМ. Я сказал им, что это была утечка памяти, но, поскольку я не был «экспертом по серверам» за 200 долларов в час, люди не хотели в это верить, потому что люди, которые там были, все еще верили, что сборщик мусора был всемогущим, а не просто очень хорошим.
Двумя днями позже (это затронуло систему «просмотр счета», а не основную бизнес-систему, т. е. у нее не было такой же рабочей нагрузки или требований к памяти, хотя на серверах было много аппаратной памяти), они наняли пару $200,00 в час консультанты, которые через день сказали им, что в приложении есть вышеупомянутая утечка памяти. Это было исправлено, и все было хорошо... за вычетом гонораров консультантов.
В любом случае, вот вывод из этого: если вы не завершаете пользовательские сеансы, когда пользователи выходят из системы или закрывают свой браузер (время сеанса истекает), вы подвергаетесь реальному риску исчерпания вашей памяти и сбоя ваших серверов. Особенно, если ваш сайт или приложение имеет значительное количество пользователей. Как упоминалось другими, лучше всего использовать облегченные токены/куки.
person
Bill Rosmus
schedule
17.06.2012