IIS 最大工作进程数的问题

时间:2022-02-09 13:43:57
最近碰到一个问题,想听听大家的意见。

就是现在用到的IIS6.0(2003服务器)的最大工作进程数的问题。

问题点:
当进程数设置为1的时候,两台客户端同时访问相同地址的时候,Oracle会出现异常。
异常的信息是,同一连接不能开始两次事务。
我的理解是两个请求,肯定是完成一个以后再开始下一个。
但通过查看log发现,不是这样的,两个请求被同时响应了,
而且让我更不能理解的是,为什么两个请求会取到同一个Oracle的连接。

望大家给分析分析原因。还是因为其它设置的问题。谢谢!

9 个解决方案

#1


不是很了解,帮顶!

#2


帮顶。。

#3


帮顶。。

#4


精!!!!!!!!!!!!

#5


是不是用静态变量了。

一个进程中静态变量只有一份copy。
IIS处理request会开多个线程的,因此多个线程会同时操作同一个静态变量。

#6


默认情况下,ADO.NET 中启用连接池。除非显式禁用,否则,连接在应用程序中打开和关闭时,池进程将对连接进行优化。还可以提供几个连接字符串修饰符来控制连接池的行为。有关更多信息,请参见MSDN中的“使用连接字符串关键字控制连接池”。
在调用SqlConnection对象的Close方法时,SQL Client .NET数据提供程序并不实际关闭内部连接。相反,数据提供程序将该内部连接存储到一个池中,以便在以后再次使用。甚至在SqlConnection对象被处理之后,该内部连接也保留在池中。如果在以后使用相同连接字符串和凭据调用SqlConnection对象的Open方法,将会再次使用同一内部连接与数据库进行通信。

参考:http://rimland.blog.163.com/blog/static/8832546200981835850969/

#8


可以链接池

#9


引用 6 楼 hongdi 的回复:
默认情况下,ADO.NET 中启用连接池。除非显式禁用,否则,连接在应用程序中打开和关闭时,池进程将对连接进行优化。还可以提供几个连接字符串修饰符来控制连接池的行为。有关更多信息,请参见MSDN中的“使用连接字符串关键字控制连接池”。
在调用SqlConnection对象的Close方法时,SQL Client .NET数据提供程序并不实际关闭内部连接。相反,数据提供程序将该内部连接存储到一个池……

谢谢,看了这篇帖子,收益非浅。我的程序里面调用连接打开的地方,是调用的共通里面的静态方法来打开的。明天到公司试试,再回来结贴。太感谢大家了。

#1


不是很了解,帮顶!

#2


帮顶。。

#3


帮顶。。

#4


精!!!!!!!!!!!!

#5


是不是用静态变量了。

一个进程中静态变量只有一份copy。
IIS处理request会开多个线程的,因此多个线程会同时操作同一个静态变量。

#6


默认情况下,ADO.NET 中启用连接池。除非显式禁用,否则,连接在应用程序中打开和关闭时,池进程将对连接进行优化。还可以提供几个连接字符串修饰符来控制连接池的行为。有关更多信息,请参见MSDN中的“使用连接字符串关键字控制连接池”。
在调用SqlConnection对象的Close方法时,SQL Client .NET数据提供程序并不实际关闭内部连接。相反,数据提供程序将该内部连接存储到一个池中,以便在以后再次使用。甚至在SqlConnection对象被处理之后,该内部连接也保留在池中。如果在以后使用相同连接字符串和凭据调用SqlConnection对象的Open方法,将会再次使用同一内部连接与数据库进行通信。

参考:http://rimland.blog.163.com/blog/static/8832546200981835850969/

#7


#8


可以链接池

#9


引用 6 楼 hongdi 的回复:
默认情况下,ADO.NET 中启用连接池。除非显式禁用,否则,连接在应用程序中打开和关闭时,池进程将对连接进行优化。还可以提供几个连接字符串修饰符来控制连接池的行为。有关更多信息,请参见MSDN中的“使用连接字符串关键字控制连接池”。
在调用SqlConnection对象的Close方法时,SQL Client .NET数据提供程序并不实际关闭内部连接。相反,数据提供程序将该内部连接存储到一个池……

谢谢,看了这篇帖子,收益非浅。我的程序里面调用连接打开的地方,是调用的共通里面的静态方法来打开的。明天到公司试试,再回来结贴。太感谢大家了。