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>
Другие вопросы по тегам