2014-10-31 60 views
3

我在ASP.NET MVC 4中有一个网站。 本网站坚持Oracle数据库的数据。我的Oracle.DataAcess.dll版本是4.112.3.0(运行时版本:4.0.30319)。下面,获取的数据库信息执行如下命令:'select * from v $ version';asp.net Oracle优化主题睡眠

database info

好吧,我剖析使用Jet脑的圆点跟踪我的网站。 在我的快照中,他们告诉我'Oracle.DataAcess.Client.OracleTuningAgent'中的两个方法消耗更多的处理器时间。这个方法是'Oracle.DataAcess.Client.OracleTuningAgent.DoScan'和'Oracle.DataAcess.Client.OracleTuningAgent.DoWait'。要么调用方法'System.Threading.Thread.Sleep'。下面,快照信息:

Dot Trace snapshot

我tryed附加自我调整=假“在我的连接字符串,但他们只停下来调用DoWait功能,并继续呼吁“DoScan”功能。

有一种方法可以禁用这个函数来调用?或者这不是一个好主意吗?

Obs:对不起英文不好,实际上我用谷歌翻译来帮我写这个问题。

+0

我有完全相同的问题......您是否设法找到答案?谢谢。 – Raymond 2015-01-09 21:33:49

+0

不幸的不是。 – Phelps 2015-02-01 18:28:58

+0

我在下面的帖子中找到了解决方案: http://stackoverflow.com/questions/2782169/oracle-data-provider-pegs-iis-worker-process-when-web-site-is-stopped 但是没有完全解决问题,其中一些进程仍在发生 – Phelps 2015-02-01 18:32:02

回答

0

菲尔普斯。

在我的情况下,我长大了最大池大小,直到没有错误。 就像这样。 “最大游泳池大小= 250;”毕竟,我试图设置它为我的应用程序需要多少连接。 您还需要调整连接String 示例) 最小/最大池大小 Incr/Decr池大小也是如此。

下面我的评论。

其实我的问题是由于缺乏oracle连接造成的。 因为在完成请求后我没有调用“close()”。

如果您有权限查找v $会话表。 你可以看到会话的成长计数。每一个你的功能运行后。

但如果您没有权限,可以使用netstat -an。 与findstr/c:1521

+0

最重要的是,您必须确保关闭您的Oracle连接“Close()” – jornathan 2016-12-07 09:58:41