ColdFusion — получение массивных отчетов об ошибках — проблемы, указанные пользователями, отсутствуют

Хорошо, вот фон. У нас есть настройка кластерной среды для запуска нашего сервера coldfusion, она в основном разделена на два разных экземпляра, на которые общий адрес перенаправляет запросы. У меня есть настройка моего приложения, чтобы отправлять мне электронные письма всякий раз, когда пользователь обнаруживает ошибку.

За последнюю неделю или около того у меня были случаи, когда я получал более 500 сообщений об ошибках в течение более 5 минут для одного пользователя, когда они просматривали рассматриваемое приложение. При нормальных обстоятельствах я мог бы получать дюжину за весь день. В большинстве случаев мне удавалось поговорить с пользователями вскоре после этого, и они сообщали, что не получили никаких страниц с ошибками и что они смогли нормально завершить свою транзакцию.

Задействованное приложение довольно прямолинейно, пользователь входит в систему, они проходят около 6 разных страниц, каждая из которых отправляет данные формы на следующую, эти переменные формы необходимы для продолжения. Ошибка, которую я, кажется, получаю для каждой из этих коллекций массивных электронных писем, заключается в отсутствии первой переменной формы, которая ищется на каждой странице. «Сообщение об ошибке: элемент SESSION_ID не определен в FORM». - кажется каждый раз.

Когда я смотрю на электронные письма об ошибках, я вижу, что такое страница перехода и страница отчета, и могу отслеживать, как пользователь проходит через приложение от шага к шагу до завершения — генерируя эти электронные письма об ошибках десятки за раз для каждой страницы.

Одна из моих гипотез заключается в том, что кластерный сервер отправляет запросы к обоим экземплярам приложения на каждом из физических серверов, и тот, на котором находится сеанс пользователя, проходит нормально, но запрос к «неиспользуемому» серверу получает запрос без данных формы и запускает эти электронные письма об ошибках. Это правдоподобно? Спасибо-


Дополнительная информация — я просто просматривал свои отчеты, и другое основное сходство между всеми этими случаями заключается в том, что переменная CGI.referrer (которую я отправляю в своем электронном письме об ошибке) не заполняется. В каждом случае этих массовых электронных писем ни одно из них не передает cgi.referrer, но во всех моих обычных отчетах об ошибках он добавляется. Я подумал, что это было любопытно..


person Community    schedule 21.08.2009    source источник
comment
если у вас есть балансировщик нагрузки перед 2+ веб-серверами, это может произойти. Но большинство балансировщиков нагрузки настроены на фиксированные сеансы, когда пользователь входит и направляется на один сервер, он остается подключенным к этому серверу. Вы передаете SessionID через URL-адрес? Если нет, попробуйте отключить файлы cookie в своем браузере и посмотрите, сможете ли вы создать их заново. Это может сделать это. . .   -  person andrewWinn    schedule 21.08.2009
comment
Это интересно - попробую настроить. ТЮ   -  person    schedule 21.08.2009
comment
Черт, наши приложения находятся за Blackboard, для аутентификации которых требуется файл cookie. Может быть, я могу настроить тестовое приложение, которое не проходит через доску, чтобы попробовать это.   -  person    schedule 21.08.2009
comment
отключите куки в вашем браузере. Если CF сохраняет идентификатор сеанса через файлы cookie, это приведет к тому, что ваш сеанс не будет действительным для запросов страниц. Кстати, если вы говорите об образовательном модуле Blackboard, у меня есть несколько слов, чтобы описать его.   -  person andrewWinn    schedule 21.08.2009
comment
Да, просто чтобы уточнить, session_Id, о котором я говорю, не является идентификатором сеанса Coldfusion, это отдельная переменная. Неоднозначно, конечно, но это пережиток институциональной практики.   -  person    schedule 21.08.2009
comment
В сообщении об ошибке упоминается переменная form.session_id — это не средство отслеживания идентификатора сеанса coldfusion.   -  person    schedule 21.08.2009
comment
Возможно это бот. Вы захватываете агент браузера?   -  person ryber    schedule 21.08.2009
comment
Что ж, пользователи аутентифицируются на доске и базе данных, прежде чем они смогут получить доступ к моему приложению, и я вижу в отчетах об ошибках, что они являются действительными пользователями.   -  person    schedule 21.08.2009


Ответы (2)


Это может быть связано с тем, что переменные CGI не всегда определены. это действительно зависит от веб-сервера, чтобы передать их. Вы можете проверить их существование, прежде чем полагаться на них... что-то вроде этого...

<cfif CGI.varname IS NOT "">
   CGI variable exists
<cfelse>
   CGI variable does not exist
</cfif>

или, может быть, даже CFPARAM, чтобы действительно убедиться, что у вас есть ваши переменные CGI.

Надеюсь это поможет.

person LucasS    schedule 10.11.2009

Согласен, сделайте cfparam для значения по умолчанию, в случае переменных cgi, которые не могут передаваться кластерными серверами.

Также, возможно, стоит добавить некоторые проверки в отчеты об ошибках, чтобы вместо 1000 электронных писем, сообщающих об одном и том же варианте 1-2 ошибок, у вас было только 1 сводное электронное письмо... Меньше хлопот, чем необходимость удалять все эти огромные дополнительные электронные письма. .

person crosenblum    schedule 22.12.2009