最近我部署了一个ASP.NET程序,用一段时间后就死掉了!w3wp.exe内存大概占用70M,结束此进程后,系统就可以用了,不过过一段时间后又死掉了,请问该怎么处理?是我程序设计的问题还是IIS配置的问题,请高人指点,分数不够还可以另外给,谢谢!

解决方案 »

  1.   

    w3wp.exe你一运行ASp.net应用程序就会启动的,你不用管它!你应该看看程序!
      

  2.   

    我就是不知道程序错在哪儿?在网上查说跟Session用关!我的程序用了一些session
      

  3.   

    在IIS6下,经常出现w3wp的内存占用不能及时释放,从而导致服务器响应速度很慢。
    今天研究了一下,可以做以下配置:
    1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。
    2、设置应用程序池的回收时间,默认为1720小时,可以根据情况修改。同时,设置同时运行的w3wp进程数目为1。再设置当内存或者cpu占用超过多少,就自动回收内存
    一般来说,这样就可以解决了。但仍然会出现个别网站因为程序问题,不能正确释放。
    那么,怎么样才能找到是哪一个网站的?1、在任务管理器中增加显示pid字段。就可以看到占用内存或者cpu最高的进程pid
    2、在命令提示符下运行iisapp -a。注意,第一次运行,会提示没有js支持,点击确定。然后再次运行就可以了。这样就可以看到pid对应的应用程序池
    3、到iis中察看该应用程序池对应的网站,就ok了
      

  4.   

    http://www.vpcblog.net/blogview.asp?logID=475
      

  5.   

    jimu8130(虚荣心发作了,想得到msmvp称号发疯了)讲详细一点!给我说一下具体步骤吧!我是菜鸟!
      

  6.   

    jimu8130(虚荣心发作了,想得到msmvp称号发疯了)我有看那篇文章,不过不怎么会设置IIS,不知道是不是用了Session的原因!
      

  7.   

    session如果及时释放以及运用合理的话不会这么高,你可以考虑有些地方使用cookie咯?
    至于设置的,你可以仔细查看下控制面板管理工具下的 iis管理器,
      

  8.   

    我就是不太会设置这个东东,急用!还来不及看!你是用什么方式释放session的
      

  9.   

    我以前出个这个问题我发现每次出现这个问题的时候都是我的asp.net代码读取数据库发生错误的时候所以每次出现这样的问题,我就先把w3wp.exe关掉再检查代码里的错误然后再试就好了呵呵,每人的情况可能不同这只是我的一个解决方法
      

  10.   

    我发现每次出现这个问题的时候都是我的asp.net代码读取数据库发生错误的时候
    所以每次出现这样的问题,我就先把w3wp.exe关掉
    再检查代码里的错误我这好像也是在读取数据库时出现问题,你说先把w3wp.exe关掉再检查代码,不会是每次出错都要人为的关一下w3wp.exe吧?请详细的说一下!
      

  11.   

    在程序开发中,特别是WEB方面,如果访问量大的话,session是占用很大内存的!
      

  12.   

    fds2003(Hunter) ,不过提示是访问数据库有问题!而且在死掉时,内存占用也不大(w3wp.exe才70M,SQL才120M),我的服务器是2G的内存!我就是想不明白!如果内存占得很多还好说,但是内存占用量也不大!请高人指点,谢谢!
      

  13.   

    比较正常把。我的w3wp 一般也是这个。(从60万行数据中,查找大约8k行记录的asp.net站点)
      

  14.   

    junzhang4008(不会飞的猪) 大概你没怎么看我的问题!我的问题是这个时候系统就不能用了,非常慢!
      

  15.   

    ASP。NET 2.0 新技术讨论群:20810637(群主)
      

  16.   

    哦。呵呵8好意思,没看清楚。最好所有的能手工释放资源的地方我都会手工释放的。不太相信c#的垃圾回收机制,有的时候很好,有的时候c#的垃圾回收机制 确实很垃圾  :)比如DataSet ds = new null;
    ........try
    {
        open数据库;
        填充ds;
        绑定显示;
    }
    catch
    {
        捕捉异常
    }
    finally    //手工释放资源  
    {
       if (ds != null)
       {
          ds.Dispose();
       }
       if (数据库打开  != null)
       {
           数据库关闭
        }
       ...............释放其他比如DataView,.....的资源
    }估计你的程序有的地方有问题把。
      

  17.   

    在每次做完操作后,要用Conn.Close(),还要不要用Conn.Disponse了啊!
      

  18.   

    ////////////////////////////////////////////////////////////////////////  
    //名称  :   string ReturnSqlValue(string sqlstring ,string filed)
    //功能    :   连接数据库并执行传递过来的sql语句,返回指定字段的数据值(以字符串传回) //传入类型:   string string
    //传入参数:   sql查询语句,指定的返回字段 //返回类型;   string
    //返回值  :   返回查询出来的对应filed的值
    ////////////////////////////////////////////////////////////////////////
    public string ReturnSqlValue(string sqlstring ,string filed)
    {
    OleDbConnection MyConnection= null;
    OleDbCommand MyCommand=null;
    OleDbDataReader MyDatareader=null;
    try
    {
    MyConnection=new OleDbConnection(GetConnectionString());
    MyCommand=new OleDbCommand(sqlstring,MyConnection);
    MyConnection.Open();
    MyDatareader=MyCommand.ExecuteReader();
    if (MyDatareader.Read())
    {
    return Convert.ToString(MyDatareader[filed]);
    }
    else
    {
    return null;
    }
    }
    catch
    {
    return null;
    }
    finally
    {
    if(MyCommand!=null)
    {
    MyCommand.Dispose();
    } if(MyDatareader!=null)
    {
    MyDatareader.Close() ;
    }                                     if (MyConnection!=null)
    {
    MyConnection.Close();
    MyConnection.Dispose();
    } } } 一个access数据库的例子
      

  19.   

    woanon(嗳老虎游)怎么说?能说详细一点吗?