Хорошо, вот фон. У нас есть настройка кластерной среды для запуска нашего сервера coldfusion, она в основном разделена на два разных экземпляра, на которые общий адрес перенаправляет запросы. У меня есть настройка моего приложения, чтобы отправлять мне электронные письма всякий раз, когда пользователь обнаруживает ошибку.
За последнюю неделю или около того у меня были случаи, когда я получал более 500 сообщений об ошибках в течение более 5 минут для одного пользователя, когда они просматривали рассматриваемое приложение. При нормальных обстоятельствах я мог бы получать дюжину за весь день. В большинстве случаев мне удавалось поговорить с пользователями вскоре после этого, и они сообщали, что не получили никаких страниц с ошибками и что они смогли нормально завершить свою транзакцию.
Задействованное приложение довольно прямолинейно, пользователь входит в систему, они проходят около 6 разных страниц, каждая из которых отправляет данные формы на следующую, эти переменные формы необходимы для продолжения. Ошибка, которую я, кажется, получаю для каждой из этих коллекций массивных электронных писем, заключается в отсутствии первой переменной формы, которая ищется на каждой странице. «Сообщение об ошибке: элемент SESSION_ID не определен в FORM». - кажется каждый раз.
Когда я смотрю на электронные письма об ошибках, я вижу, что такое страница перехода и страница отчета, и могу отслеживать, как пользователь проходит через приложение от шага к шагу до завершения — генерируя эти электронные письма об ошибках десятки за раз для каждой страницы.
Одна из моих гипотез заключается в том, что кластерный сервер отправляет запросы к обоим экземплярам приложения на каждом из физических серверов, и тот, на котором находится сеанс пользователя, проходит нормально, но запрос к «неиспользуемому» серверу получает запрос без данных формы и запускает эти электронные письма об ошибках. Это правдоподобно? Спасибо-
Дополнительная информация — я просто просматривал свои отчеты, и другое основное сходство между всеми этими случаями заключается в том, что переменная CGI.referrer (которую я отправляю в своем электронном письме об ошибке) не заполняется. В каждом случае этих массовых электронных писем ни одно из них не передает cgi.referrer, но во всех моих обычных отчетах об ошибках он добавляется. Я подумал, что это было любопытно..