Lucee Session Loss в нестабильные времена
Я использую Lucee 5.1.3.18/Tomcat/centOS/mySql (3 физических,6 виртуальных), и у меня беспорядочная потеря сеанса. Я просмотрел и убедился, что это не плохой код, делающий это. Ситуация такова, что пользователь добавляет товары в корзину (все товары объединены в session_id). Они заполняют информацию об оплате, кредитной карте и т. Д. На странице оформления заказа. Обычно, если вы ждете от 3 до 5 минут и отправляете отзыв, выдается ошибка, когда вы не видите эти элементы (идентификатор сессии изменен). Временные рамки меняются, но обычно это около 5 минут.
Это происходит, когда у меня настроен администратор Lucee для использования моего источника данных и сохранения информации о сеансе в БД.
Application.cfc:
<cfset THIS.Name = "sessionName" />
<cfset THIS.SessionManagement = true />
<cfset THIS.ClientManagement = true />
<cfset THIS.ApplicationTimeout = CreateTimeSpan(0,12,0,0) />
<cfset THIS.SessionTimeout = CreateTimeSpan(0,4,0,0) />
<cfset THIS.SetClientCookies = true />
<cfset THIS.SetDomainCookies = false />
<cfset THIS.ScriptProtect = true />
<cfset THIS.sessionType = "jee">
<cfset THIS.sessionStorage = "myDatasource">
<cfset THIS.sessionCluster = true>
изменения
<cfset THIS.sessionType = "jee">
к cfml, также имеет ту же проблему (пробовал EHcache безуспешно).
Если я переключаюсь на использование "Памяти" и устраняю БД, у меня все еще остается проблема. Использование "Памяти" также приводит к переполнению кучи, и в конечном итоге серверы блокируются.
Журналы не показывают ничего полезного, но время от времени я видел ошибки из-за разорванного канала и потери соединения с БД. Я считаю, что к серверу, блокирующемуся все же.
Я не пытаюсь задать открытый вопрос, но есть ли у вас какие-либо советы по вероятным проблемам, с которыми вы столкнулись? Есть ли какие-то неясные настройки Люси, которые я, возможно, пропустил? Любая помощь приветствуется.
Спасибо генри
1 ответ
Вы можете посмотреть, можете ли вы найти где-нибудь из этих вызовов ниже в своем коде, так как, возможно, они заканчивают ваши сеансы раньше.
sessionInvalidate может завершить сеанс (я не уверен, что он немедленный или после того, как запрос, который его вызвал, завершился), и вызов setMaxInactiveInterval отменяет тайм-аут сеанса, используемый в application.cfc.
<cfscript>
getPageContext().getSession().setMaxInactiveInterval(javaCast("int", 60));
sessionInvalidate();
</cfscript>