1

我被要求接管一个应用程序,该应用程序在 1-2 个用户测试下运行良好,但是一旦我们对其进行更大的测试,它就开始崩溃。我们看到随机超时,以及关于代码无法找到它预期绑定到的某些列的消息,尽管它只有 1-2 个用户工作。

应用程序的结构是:

--------------
| WebSite    |
--------------
| WebService |
--------------
| Database   |
--------------

该网站通过网络服务与数据库进行所有通信。查看 web 服务代码,我看到它使用一个类来完成数据库工作,并将其声明为类级变量:

private static SqlConnection cn;

然后在页面上需要连接的所有方法中使用它。是静态的,这意味着所有用户只有一个实例,对吗?我只是想确认我看到的是正确的,因为我们删除了它并正在测试它。看到那行对我来说意味着连接对象的 1 个实例正在所有用户之间共享,这可以解释为什么 1-2 个用户可以使用,但是用户数量越多,排队等待它的人就越多,最终导致随机错误。只是想确认我理解正确。

谢谢。

4

1 回答 1

5

是的,该静态变量将跨用户访问。问题的真正根源是缺乏线程安全,但不一定是连接对象的共享。

于 2012-04-09T14:29:16.097 回答