Есть ли проблема с ADO.NET DataSets в среде с балансировкой нагрузки? - PullRequest
1 голос
/ 29 июня 2009

За последние несколько месяцев у нас была странная проблема с нашим сайтом. Время от времени различные запросы к базе данных, использующие ADO.NET DataSets, будут выдавать ошибку ... наиболее распространенным из которых является "Не удалось включить ограничения. Одна или несколько строк содержат значения, нарушающие ненулевые, уникальные или внешние кнопки ".

Данные на самом деле действительны, так как без каких-либо изменений ошибка будет прерывистой. Кроме того, «исправить» для этого является перезапуск пула приложений на обоих веб-серверах ... так что проблема не может быть в возвращении неверных данных. После того, как это будет сделано, он может нормально работать в течение нескольких недель или три раза в день. Там нет последовательности этому ...

Это также кажется как более новые средства доступа к данным, такие как Linq 2 SQL, работают просто отлично ... хотя трудно сказать, так как сайт использует оба в данный момент. (Работаю над тем, чтобы все перевести на L2S, но, к сожалению, не так много времени, чтобы переписать старые компоненты ...)

Так у кого-нибудь было что-то подобное раньше? Это что-то с балансировкой нагрузки? Может, что-то не так с серверами? (Я принудительно установил все подключения к каждому серверу и обнаружил ошибку на обоих из них.) Может ли быть что-то не так с работой на ВМ?

Э-э-э ... хорошо, поэтому общий вопрос: что это вызывает и как это исправить?

О, и сайт находится в .NET 3.5 ...

1 Ответ

0 голосов
/ 29 июня 2009

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

Если вы можете, настройте промежуточную среду, сбалансированную по нагрузке, как ваши рабочие серверы. Затем начните нагрузочное тестирование приложения.

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

UPDATE:

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

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

Некоторые ссылки для загрузки инструментов тестирования здесь . Другой список здесь .

В качестве примечания я видел, что приложения начинают демонстрировать странное поведение при нагрузке всего 5 одновременных пользователей. Это действительно зависит от того, как сайт построен.

...