首页 > 电脑专区 > 电脑教程 >

ASP.NET开发网站程序常见错误汇总

来源:互联网 2023-02-20 23:27:18 295
在运用Visiol studio.NET 开发Web 应用程式中,开发者常常会遇到一些问题:如我开发好的程式,在开发环境下测试没问题,怎么一搬到应用环境下,就会有问题? 不是程式的无法运行,就是程式的效率慢的同蜗牛在爬, 这种情况在.NET的新手中尤其常见。我不知道为什么,一些介绍.NET开发的书本里引用的例子代码,也对此问题视而不见,尤其让我郁闷的是一些我喜欢的书,如:ADO.NET技术内幕>>,ASP.NET2.0高级编程(第4版 )>>,这两本都是清华大学出版社出版的, 有一本书更糟糕Visual Basic.Net 专业项目实例开发>>,我建议大家还是不要看了吧,免的浪费时间和精力。

wRh办公区 - 实用经验教程分享!

这篇文章不仅对.NET开发者的新手有帮助,同样对哪些有经验,也带来一些启示和参考。

问题

  • 他们会遇到什么样的问题,我不妨总结给大家:

    wRh办公区 - 实用经验教程分享!

    1. 数据库连接超时

    wRh办公区 - 实用经验教程分享!

    2. 创建的对象只管用,不管释放

    wRh办公区 - 实用经验教程分享!

    3. 调试(Debug)模式下编译后,就用于应用环境中了

    wRh办公区 - 实用经验教程分享!

    4. 实际作业模式分享

    wRh办公区 - 实用经验教程分享!

    上面的问题就像毒瘤,积累到一定程度就爆发,且影响深远。 wRh办公区 - 实用经验教程分享!

  • 此文章非法爬取自百度经验

步骤/方法

  • 1数据库连接超时篇

    wRh办公区 - 实用经验教程分享!

    若要知道数据库连接超时问题,先看下面一段代码:

    wRh办公区 - 实用经验教程分享!

    [Sample-01]:

    wRh办公区 - 实用经验教程分享!

    Public Shared Function getOEMPN(ByVal psPN As String, ByRef OEMPN As String) As BSResult

    wRh办公区 - 实用经验教程分享!

    0001 Dim clsResult As New BSResult

    wRh办公区 - 实用经验教程分享!

    0002 Try

    wRh办公区 - 实用经验教程分享!

    0003 clsResult.ResultID = -1

    wRh办公区 - 实用经验教程分享!

    0004 Dim dtResult As New DataTable

    wRh办公区 - 实用经验教程分享!

    0005 Dim Sql As String = String.Empty

    wRh办公区 - 实用经验教程分享!

    0006 Dim clsOraDb As New clsOraClienDb

    wRh办公区 - 实用经验教程分享!

    0007 Dim strConn As String = ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString

    wRh办公区 - 实用经验教程分享!

    0008 clsOraDb.Open(strConn) ‘这里Open后,后面看不到 clsOraDb.Close

    wRh办公区 - 实用经验教程分享!

    0009 Sql = "SELECT SATBMMBRND.OEMPN FRUNO FROM SATBMMBRND WHERE SATBMMBRND.MATNO = :MATNO"

    wRh办公区 - 实用经验教程分享!

    0010 Dim params() As OracleParameter = {New OracleParameter("MATNO", psPN)}

    wRh办公区 - 实用经验教程分享!

    0011 If clsOraDb.FillDataTable(Sql, dtResult, params) = False Then

    wRh办公区 - 实用经验教程分享!

    0012 Return clsResult

    wRh办公区 - 实用经验教程分享!

    0013 End If

    wRh办公区 - 实用经验教程分享!

    0014 If dtResult Is Nothing Then

    wRh办公区 - 实用经验教程分享!

    0015 Return clsResult

    wRh办公区 - 实用经验教程分享!

    0016 End If

    wRh办公区 - 实用经验教程分享!

    0017 If dtResult.Rows.Count > 0 Then

    wRh办公区 - 实用经验教程分享!

    0018 OEMPN = dtResult.Rows(0)("FRUNO").ToString()

    wRh办公区 - 实用经验教程分享!

    0019 Else

    wRh办公区 - 实用经验教程分享!

    0020 OEMPN = ""

    wRh办公区 - 实用经验教程分享!

    0021 End If

    wRh办公区 - 实用经验教程分享!

    0022 clsResult.ResultID = 1

    wRh办公区 - 实用经验教程分享!

    0023 Return clsResult

    wRh办公区 - 实用经验教程分享!

    0024 Catch ex As Exception

    wRh办公区 - 实用经验教程分享!

    0025 clsResult.ResultID = -1

    wRh办公区 - 实用经验教程分享!

    0026 Return clsResult

    wRh办公区 - 实用经验教程分享!

    0027 End Try

    wRh办公区 - 实用经验教程分享!

    End Function

    wRh办公区 - 实用经验教程分享!

    对上述代码行的部分解释:

    wRh办公区 - 实用经验教程分享!

    0006:引用数据库连接的类;

    wRh办公区 - 实用经验教程分享!

    0008:打开数据库连接;

    wRh办公区 - 实用经验教程分享!

    然后,整个函数你再找不到关闭数据库连接的动作,是要等着操作系统来释放吗? 有人就说啦,看起来好像没有什么大不了的,这仅仅是一个函数而已; 数据库打开连接,未关闭不会影响到整个应用程式; 果真是这样吗?

    wRh办公区 - 实用经验教程分享!

    让我们谈谈数据库连接的问题,在Oracle数据库里,一般默认的数据库连接数最多也就100多来个,不会超过200个,即使你改变这个连接数,但无论怎样,它的连接数是有限的,不可能无限地供你消耗。

    wRh办公区 - 实用经验教程分享!

    在Web这个程式里,它不仅不会自动关闭数据库连接,象这样的函数还会每次调用,都会重新用掉一个数据库连接; 如果象这样的函数很多的话,你就等着一个错误警告页面弹出来,如Database Connection Timeout...等讯息。

    wRh办公区 - 实用经验教程分享!

    这还不算什么,更有甚者,尽然在循环语句里写下面的代码如:

    wRh办公区 - 实用经验教程分享!

    [Sample-02]

    wRh办公区 - 实用经验教程分享!

    Foreach(DataRow row in tabl.select(“”,”ProductID”)

    wRh办公区 - 实用经验教程分享!

    ……………

    wRh办公区 - 实用经验教程分享!

    clsOraDb.Open(strConn)

    wRh办公区 - 实用经验教程分享!

    ………….

    wRh办公区 - 实用经验教程分享!

    Next

    wRh办公区 - 实用经验教程分享!

    有人还喜欢玩下面的语句:

    wRh办公区 - 实用经验教程分享!

    [Sample-03]

    wRh办公区 - 实用经验教程分享!

    Foreach(DataRow row in tabl.select(“”,”ProductID”)

    wRh办公区 - 实用经验教程分享!

    Foreach(DataColumn col in tbl.columns)

    wRh办公区 - 实用经验教程分享!

    ……………

    wRh办公区 - 实用经验教程分享!

    clsOraDb.Open(strConn)

    wRh办公区 - 实用经验教程分享!

    Next

    wRh办公区 - 实用经验教程分享!

    ………….

    wRh办公区 - 实用经验教程分享!

    Next

    wRh办公区 - 实用经验教程分享!

    说到这,有人就问啦,我在开发环境下测试一点问题都没有呀?是呀,你是没有问题,我想问的是,你开发环境的测试数据有几笔?

    wRh办公区 - 实用经验教程分享!

    现在,问题已经知道在哪里,怎么解决?

    wRh办公区 - 实用经验教程分享!

    针对[sample-01]做如下处理,注意下面代码:

    wRh办公区 - 实用经验教程分享!

    Public Shared Function getOEMPN(ByVal psPN As String, ByRef OEMPN As String) As BSResult

    wRh办公区 - 实用经验教程分享!

    0001 Dim clsResult As New BSResult

    wRh办公区 - 实用经验教程分享!

    0002 Try

    wRh办公区 - 实用经验教程分享!

    0003 clsResult.ResultID = -1

    wRh办公区 - 实用经验教程分享!

    0004 Dim dtResult As New DataTable

    wRh办公区 - 实用经验教程分享!

    0005 Dim Sql As String = String.Empty

    wRh办公区 - 实用经验教程分享!

    0006 Dim clsOraDb As New clsOraClienDb

    wRh办公区 - 实用经验教程分享!

    0007 Dim strConn As String = ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString

    wRh办公区 - 实用经验教程分享!

    0008 clsOraDb.Open(strConn) 注释:这里Open后,后面看不到 clsOraDb.Close

    wRh办公区 - 实用经验教程分享!

    0009 Sql = "SELECT SATBMMBRND.OEMPN FRUNO FROM SATBMMBRND WHERE SATBMMBRND.MATNO = :MATNO"

    wRh办公区 - 实用经验教程分享!

    0010 Dim params() As OracleParameter = {New OracleParameter("MATNO", psPN)}

    wRh办公区 - 实用经验教程分享!

    0011 If clsOraDb.FillDataTable(Sql, dtResult, params) = False Then

    wRh办公区 - 实用经验教程分享!

    0012 Return clsResult

    wRh办公区 - 实用经验教程分享!

    0013 End If

    wRh办公区 - 实用经验教程分享!

    0014 If dtResult Is Nothing Then

    wRh办公区 - 实用经验教程分享!

    0015 Return clsResult

    wRh办公区 - 实用经验教程分享!

    0016 End If

    wRh办公区 - 实用经验教程分享!

    0017 If dtResult.Rows.Count > 0 Then

    wRh办公区 - 实用经验教程分享!

    0018 OEMPN = dtResult.Rows(0)("FRUNO").ToString()

    wRh办公区 - 实用经验教程分享!

    0019 Else

    wRh办公区 - 实用经验教程分享!

    0020 OEMPN = ""

    wRh办公区 - 实用经验教程分享!

    0021 End If

    wRh办公区 - 实用经验教程分享!

    0022 clsResult.ResultID = 1

    wRh办公区 - 实用经验教程分享!

    0088 clsOraDb.Close 注释:后面看到 clsOraDb.Close

    wRh办公区 - 实用经验教程分享!

    0023 Return clsResult

    wRh办公区 - 实用经验教程分享!

    0024 Catch ex As Exception

    wRh办公区 - 实用经验教程分享!

    0099 clsOraDb.Close 注释:程序异常也看到 clsOraDb.Close

    wRh办公区 - 实用经验教程分享!

    0025 clsResult.ResultID = -1

    wRh办公区 - 实用经验教程分享!

    0026 Return clsResult

    wRh办公区 - 实用经验教程分享!

    0028 Throw ex

    wRh办公区 - 实用经验教程分享!

    0027 End Try

    wRh办公区 - 实用经验教程分享!

    End Function

    wRh办公区 - 实用经验教程分享!

    注意上面的两句代码:0088行和0099行。

    wRh办公区 - 实用经验教程分享!

    在异常处理的时候,特别提醒两点:

    wRh办公区 - 实用经验教程分享!

    一, 你的数据库关闭的时候应该是在代码行0028前,而不是后;

    wRh办公区 - 实用经验教程分享!

    二, 有人不习惯(或者一时疏忽)加上0088行的代码;

    wRh办公区 - 实用经验教程分享!

    针对[Sample-02]和[sample-03],把打开数据库连接写在所有的循环语句之前,如:

    wRh办公区 - 实用经验教程分享!

    clsOraDb.Open(strConn)

    wRh办公区 - 实用经验教程分享!

    Foreach(DataRow row in tabl.select(“”,”ProductID”)

    wRh办公区 - 实用经验教程分享!

    ……………

    wRh办公区 - 实用经验教程分享!

    ………….

    wRh办公区 - 实用经验教程分享!

    Next

    wRh办公区 - 实用经验教程分享!

    当然还有另外一个做法,就是用Using语
  • 2对象只管创建应用,不管释放篇

    wRh办公区 - 实用经验教程分享!

    我们继续用[Sample-01]的代码,我们现在看0004行的代码:

    wRh办公区 - 实用经验教程分享!

    0004 Dim dtResult As New DataTable

    wRh办公区 - 实用经验教程分享!

    谁会发现它被释放,你不能,我也不能,从来没有被释放过。

    wRh办公区 - 实用经验教程分享!

    "0004"行的代码解释是,要在内存划分一个空间给这个定义的对象dtresult; 系统要划分多大的空间呢?呀,我没有研究过(留给那些有心人吧,呵呵..)。但有一点,要在内存划分一个空间,就是要占用内存。那么内存有多大呢,不是无限大吧,也是有限的,所有运行上述代码的最终结果是,系统的执行效率越来越慢,有人就怀疑,我有内存1到2G的,加上虚拟内存就更大,我只能说你的怀疑没错。可是你的应用程序就用这么一只函数吗?我想肯定不是,所以上百只函数的应用执行对内存的消耗可想而知。如果是后台自动运行的程序,及时是一个function,也会让系统崩溃。这只是一个简单的例子,有更复杂的。像这样的对象应用还有:Dataset, Datatable,DataReader,DataAdapter,Datagrid..等。

    wRh办公区 - 实用经验教程分享!

    那么怎么解决这些问题呢:

    wRh办公区 - 实用经验教程分享!

    2.1在Try catch 语句前定义好所用的对象,如:

    wRh办公区 - 实用经验教程分享!

    Dim dtResult As New DataTable

    wRh办公区 - 实用经验教程分享!

    Dim DR as New DataReader

    wRh办公区 - 实用经验教程分享!

    Dim DS as New Dataset

    wRh办公区 - 实用经验教程分享!

    Try

    wRh办公区 - 实用经验教程分享!

    ..

    wRh办公区 - 实用经验教程分享!

    Catch ex As Exception

    wRh办公区 - 实用经验教程分享!

    Throw ex

    wRh办公区 - 实用经验教程分享!

    Finally

    wRh办公区 - 实用经验教程分享!

    End Try

    wRh办公区 - 实用经验教程分享!

    2.2释放的语句如下

    wRh办公区 - 实用经验教程分享!

    Dim dtResult As New DataTable

    wRh办公区 - 实用经验教程分享!

    Dim DR as New DataReader

    wRh办公区 - 实用经验教程分享!

    Dim DS as New Dataset

    wRh办公区 - 实用经验教程分享!

    Try

    wRh办公区 - 实用经验教程分享!

    ..

    wRh办公区 - 实用经验教程分享!

    ……………..

    wRh办公区 - 实用经验教程分享!

    Catch ex As Exception

    wRh办公区 - 实用经验教程分享!

    --释放应用的对象

    wRh办公区 - 实用经验教程分享!

    Throw ex

    wRh办公区 - 实用经验教程分享!

    Finally

    wRh办公区 - 实用经验教程分享!

    --使用完后,释放应用的对象

    wRh办公区 - 实用经验教程分享!

    dtResult.dispose --从内存里清楚该对象

    wRh办公区 - 实用经验教程分享!

    DR.dispose -从内存里清楚该对象

    wRh办公区 - 实用经验教程分享!

    DS.dispose -从内存里清楚该对象

    wRh办公区 - 实用经验教程分享!

    End Try

    wRh办公区 - 实用经验教程分享!

    有人习惯写成下面这样:

    wRh办公区 - 实用经验教程分享!

    Dim dtResult As New DataTable

    wRh办公区 - 实用经验教程分享!

    Dim DR as New DataReader

    wRh办公区 - 实用经验教程分享!

    Dim DS as New Dataset

    wRh办公区 - 实用经验教程分享!

    Try

    wRh办公区 - 实用经验教程分享!

    ..

    wRh办公区 - 实用经验教程分享!

    ‘使用完后,释放应用的对象

    wRh办公区 - 实用经验教程分享!

    dtResult.dispose ‘从内存里清楚该对象

    wRh办公区 - 实用经验教程分享!

    DR.dispose ‘从内存里清楚该对象

    wRh办公区 - 实用经验教程分享!

    DS.dispose ‘从内存里清楚该对象

    wRh办公区 - 实用经验教程分享!

    Catch ex As Exception

    wRh办公区 - 实用经验教程分享!

    ‘释放应用的对象

    wRh办公区 - 实用经验教程分享!

    Throw ex

    wRh办公区 - 实用经验教程分享!

    Finally

    wRh办公区 - 实用经验教程分享!

    End Try

    wRh办公区 - 实用经验教程分享!

    这不是也释放了吗?我想问的是,如果程序出现异常,它们会释放吗 ?我肯定得告诉大家,它们一定不能释放,为了确保程序的稳定运行,我建议大家都来用Try Catch语句。

    wRh办公区 - 实用经验教程分享!

    2.3 绝不建议在循环语句写如下的语句, 具体为什么,自己思考。

    wRh办公区 - 实用经验教程分享!

    Foreach (DataRow row in tabl.select(“”,”ProductID”)

    wRh办公区 - 实用经验教程分享!

    ……………

    wRh办公区 - 实用经验教程分享!

    Dim DS new Dataset 记住此乃写代码之大忌;

    wRh办公区 - 实用经验教程分享!

    Dim DT new Databable….

    wRh办公区 - 实用经验教程分享!

    ………….

    wRh办公区 - 实用经验教程分享!

    Next

    wRh办公区 - 实用经验教程分享!

    还有一种写法

    wRh办公区 - 实用经验教程分享!

    Dim DS new Dataset

    wRh办公区 - 实用经验教程分享!

    Dim DT new Databable…

    wRh办公区 - 实用经验教程分享!

    Foreach (DataRow row in tabl.select(“”,”ProductID”)

    wRh办公区 - 实用经验教程分享!

    DS=GetDatase

    wRh办公区 - 实用经验教程分享!

    DT=GetDatatable……………

    wRh办公区 - 实用经验教程分享!

    .

    wRh办公区 - 实用经验教程分享!

    ………….

    wRh办公区 - 实用经验教程分享!

    Next

    wRh办公区 - 实用经验教程分享!

    正确的写法是:

    wRh办公区 - 实用经验教程分享!

    Dim DS new Dataset

    wRh办公区 - 实用经验教程分享!

    Dim DT new Databable…

    wRh办公区 - 实用经验教程分享!

    Try

    wRh办公区 - 实用经验教程分享!

    Foreach (DataRow row in tabl.select(“”,”ProductID”)

    wRh办公区 - 实用经验教程分享!

    DS=nothing ‘每次使用,都先把内存空间释放出来

    wRh办公区 - 实用经验教程分享!

    DT=nothing ‘每次使用,都先把内存空间释放出来

    wRh办公区 - 实用经验教程分享!

    DS=GetDatase

    wRh办公区 - 实用经验教程分享!

    DT=GetDatatable……………

    wRh办公区 - 实用经验教程分享!

    .

    wRh办公区 - 实用经验教程分享!

    ………….

    wRh办公区 - 实用经验教程分享!

    Next

    wRh办公区 - 实用经验教程分享!

    Catch ex As Exception

    wRh办公区 - 实用经验教程分享!

    Throw ex

    wRh办公区 - 实用经验教程分享!

    Finally

    wRh办公区 - 实用经验教程分享!

    DS.dispose

    wRh办公区 - 实用经验教程分享!

    DT.dispose

    wRh办公区 - 实用经验教程分享!

    End Try

    wRh办公区 - 实用经验教程分享!

    另外,提醒大家一点,记得用 For Each 语句替代For i=0 to Rowcount-1,这样的效率改善也是明显的。
  • 3调试(Debug)模式下编译就用于应用环境中篇

    wRh办公区 - 实用经验教程分享!

    大家看下面的图片:

    wRh办公区 - 实用经验教程分享!

    有人会留意这个界面吗?有,但一定不多。

    wRh办公区 - 实用经验教程分享!

    接着,程式开发好(也包括单元测试),然后编译直接分发到应用环境。

    wRh办公区 - 实用经验教程分享!

    整个过程就结束了。谁也不曾想,这里埋下了一个深深的地雷,据微软的人讲,这样分发的程式到应用环境,你有多少内存恐怕都不够。

    wRh办公区 - 实用经验教程分享!

    所以微软建议我们做如下的工作:

    wRh办公区 - 实用经验教程分享!

    “請將Web.config中的debug及Trace均設為False。還有您的所有程式請確保compile為Release Mode

    wRh办公区 - 实用经验教程分享!

    Application set up for debugging

    wRh办公区 - 实用经验教程分享!

    One reason for high memory that we see here in Support a lot is when you have debugging, tracing, or both enabled for your application.

    wRh办公区 - 实用经验教程分享!

    While you are developing your application, this is a necessity.By default, when you create your application in Visual Studio .NET, you will see the following attribute set in your Web.config file:

    wRh办公区 - 实用经验教程分享!

    compilation … debug="true" />

    wRh办公区 - 实用经验教程分享!

    and/or

    wRh办公区 - 实用经验教程分享!

    trace enabled="true" … />

    wRh办公区 - 实用经验教程分享!

    Also, when you do a final build of your application, make sure that you do this in "Release" mode, not "Debug" mode. ”

    wRh办公区 - 实用经验教程分享!

    如果不这样做会有什么事情发生? 我分享一个同事的感受给大家:

    wRh办公区 - 实用经验教程分享!

    “已经是很强悍的的DB和AP服务器(全部是刀片式服务器)了,可是问题一而再再而三地发生,那种感觉真的很无助很凄凉啊~”

    wRh办公区 - 实用经验教程分享!

    后来的结果发现是内存使用率超高,到一定限度的时候,就会反应变慢,这个时候只要重启IIS就可以好一段时间。后来分析IIS用到实体加虚拟的内存超过2G就会爆掉。

    wRh办公区 - 实用经验教程分享!

    这就是原因,你想遇到吗?那就不妨试试。

    wRh办公区 - 实用经验教程分享!

    ASP.NET开发网站程序常见错误汇总wRh办公区 - 实用经验教程分享!

  • 4实际操作分享篇

    wRh办公区 - 实用经验教程分享!

    上面三个环节,任何一个发生问题,都会影响到系统的效率。我分享我们实际的作业的过程发生的一些情况,及怎么解决这些问题。

    wRh办公区 - 实用经验教程分享!

    4.1 内存使用达到峰值,导致程序无法继续运行。

    wRh办公区 - 实用经验教程分享!

    有个同事分享了他们的经验如下(原话分享):

    wRh办公区 - 实用经验教程分享!

    我们有一些程式是server跑的Job,并有越来越多之势。而大家在写程式的时候可能比较少考虑到耗内存这个问题。

    wRh办公区 - 实用经验教程分享!

    下面的例子也许会给我们一点启示。

    wRh办公区 - 实用经验教程分享!

    下面也是原话

    wRh办公区 - 实用经验教程分享!

    Pls help to check the Run In Rack Job program . It will no response after running two or three days . the AP server Memory usage will over 2.5G . after we close the the program , Memory will decrease to 1.5 .

    wRh办公区 - 实用经验教程分享!

    大致意思是:在服务器端(也叫后台)自动跑的一只程式,运行了两三天后,停止运行了。检查Server的内存使用率时,发现超过了2.5G;在关掉了这只程式后,它就降到了1.5G…下面的图片为证:

    wRh办公区 - 实用经验教程分享!

    4.2 进程请求过多,导致CPU无法及时处理,程序效率反应较慢。

    wRh办公区 - 实用经验教程分享!

    下面都是同事的原话:

    wRh办公区 - 实用经验教程分享!

    “年后产量逐渐增加,新的问题又出现了。从Server Performance上分析,和上次Memory过高不同的是CPU使用率过高。

    wRh办公区 - 实用经验教程分享!

    每当CPU过高的时候,产线会大面积的反应说慢(这点和连接到哪台AP有关系)。

    wRh办公区 - 实用经验教程分享!

    每次慢的时候,我们就找到CPU过高的那台AP,recycle IIS的application pool后就OK了。

    wRh办公区 - 实用经验教程分享!

    于是我么再次找到Bon帮忙分析(结论:微软结案报告 20090226V1 - SRT090119833891 Web service can't serve IISReset can fix.msg)。并给出了开发程序时的一些建议。

    wRh办公区 - 实用经验教程分享!

    结论大致是说,没有进程占用了特别高的CPU,也没有进程占用CPU时间过长。只是对DB的请求的进程过多(比较吻合3厂的实际状况—附件多,刷的快),加起来就整体过高。

    wRh办公区 - 实用经验教程分享!

    还发现了很多DLL是built in debug mode,这些DLL占用了过多的memory资源。

    wRh办公区 - 实用经验教程分享!

    后来根据Bon的建议,我们修改了IIS application pool的设定如下,解决过多请求不能及时处理,而造成CPU过高的问题。”

    wRh办公区 - 实用经验教程分享!

    这里有一些问答关于应用连接池(Application Pool)的设定,对理解这样的设置有一定的帮助:

    wRh办公区 - 实用经验教程分享!

    1. Is one application pool’s maximum memory usage 1.5G?

    wRh办公区 - 实用经验教程分享!

    A&: Each application pool is a w3wp.exe. w3wp.exe is a process. Every process has 2 G User mode virtual address, so the maximum memory usage for application pool is 2G. However, you can’t make sure that there is no memory fragment issue. Therefore, Out of memory always occur after 1.5 G according to our experience.

    wRh办公区 - 实用经验教程分享!

    2. Is each application pool independent on memory usage?

    wRh办公区 - 实用经验教程分享!

    A&: Different application pools are different w3wp.exe, so each application pool’s maximum memory usage is 2G.

    wRh办公区 - 实用经验教程分享!

    3. Can setup maximum CPU usage on each application pool?

    wRh办公区 - 实用经验教程分享!

    A&: You can monitor it, but you can’t setup it.

    wRh办公区 - 实用经验教程分享!

    ASP.NET开发网站程序常见错误汇总wRh办公区 - 实用经验教程分享!

    ASP.NET开发网站程序常见错误汇总wRh办公区 - 实用经验教程分享!

    ASP.NET开发网站程序常见错误汇总wRh办公区 - 实用经验教程分享!

  • 以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!wRh办公区 - 实用经验教程分享!


    标签: 错误程序汇总发网

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码