1

在过去的几个月里,我们的网站遇到了一个奇怪的问题。偶尔使用 ADO.NET 数据集对数据库进行各种查询会引发错误...其中最常见的是“无法启用约束。一个或多个行包含违反非空、唯一或外来的值-关键约束。”

数据实际上是有效的,因为如果不更改任何内容,错误将是间歇性的。此外,它的“修复”是在两个 Web 服务器上回收应用程序池......所以问题不可能是返回的错误数据。完成此操作后,它可以一次运行数周,或一天中断 3 次。它没有一致性...

似乎更新的数据访问方式(例如Linq 2 SQL)工作得很好……虽然很难说,因为该站点目前正在使用这两种方式。(正在努力将所有内容都转移到 L2S,但遗憾的是没有太多时间重写旧组件......)

那么以前有人有过这样的事情吗?与负载平衡有关吗?可能是服务器有问题?(我已经强制所有连接到每台服务器,并在它们两个上都遇到了错误。)在 VM 中运行会不会有问题?

呃……好的,所以总体问题是:是什么原因造成的,我该如何解决?

哦,该网站使用 .NET 3.5...

4

1 回答 1

0

根据您所说的,我猜这与发生错误时服务器上的负载有关。

如果可以,请设置一个负载平衡的暂存环境,就像您的生产服务器一样。然后开始对应用程序进行负载测试。

此外,请确保您在生产服务器上应用了所有最新的服务包/更新。MS倾向于不告诉我们他们正在修复的所有内容。最后,查看 MS Connect 以查看修补程序是否可以解决您所说的问题。

更新:

负载测试可以尽可能简单或复杂。它应该做的是通过一系列页面以可重复的方式在您的站点上执行标准操作。您通常希望模拟与预期用户行为一致的每个页面加载/操作之间的“思考”时间。

然后,您以一定数量的同时用户的身份执行测试。在执行测试时,您需要记录任何错误和服务器性能计数器,以了解应用程序的实际执行情况。

这里有一些负载测试工具的链接另一个列表在这里

作为旁注,我已经看到应用程序在只有 5 个同时用户的负载下开始表现出奇怪的行为。这实际上取决于网站的构建方式。

于 2009-06-29T14:41:50.670 回答