iis6,单做的应用程序池
网站不能访问时,服务器的w3wp占cpu50%,内容1个G,sql也占700多M,cpu20%想问一下如何设置应用程序池中的参数?请朋友按应用程序池的每一个选项告诉我,我是小菜,非常感谢大家帮助!!!!!

解决方案 »

  1.   

    是不是访问人数多,你这种情况,很可能是两方面:
    1. 程序代码造成
    2.Sql Server 造成第一种可能,你就要优化你的网站程序啦
    第二种可能,在完成第一种可能的情况下,进一步减少数据库操作。
      

  2.   

    并发测试没有?
    SQL数据读取优化     缓存技术  等等  
      

  3.   

    sql如果没有配置的话,你有多少内存就会用多少的~~你可以限制一下大小!不过你也注意一点,连接有没有及时释放!
    至于CPU的问题如果一直是50%以上,那程序肯定有问题!
      

  4.   

    iis6,单做的应用程序池
    网站不能访问时,服务器的w3wp占cpu50%,内容1个G,这个很可能程序里面有问题,特别是CPU占用这么高。像Application/Session之类都是比较吃内存的,检查是否有非托管对象没有即时释放,程序逻辑结构设计是否合理sql也占700多M,cpu20%  DBS占用内存多一些,如果经常访问的库和表比较多还比较正常
      

  5.   

    应该和程序池和IIS配置无关。
    程序的问题,看看是因为访问量太大的问题吗。
      

  6.   

    用adplus抓内存进行性能分析,看看是哪个代码段出了问题
      

  7.   

    朋友你说的Application/Session之类的我没用,非托管对象都有什么?请说明?
      

  8.   

    服务器的w3wp占cpu50%,内容1个G是W3wp.exe的大小吗?如果你没改过Machine.config,默认超过840MB就会回收,我觉得你的程序代码写的有问题,有大对象的存在,比如说string超过85KB,就会识别为大对象,会复制到另外一个地方去处理。你先查查有没有这样的代码
    string str1=str2+str3;
    如果有这样的代码的话,请用StringBuilder你的CPU不断在回收内存哦。
      

  9.   

    有没改善程序的书,比如说都哪些编辑方法不对,应该如何写程序或改善程序的书(asp.net c#)
      

  10.   

    在IIS6下,经常出现w3wp的内存占用不能及时释放,从而导致服务器响应速度很慢。由于内存释放不及时严重影响到服务器的正常运营,建议采用以下配置,但请考虑自身服务器的使用情况。
    可以做以下配置:
    1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。(进程池越多越占用内存,由于访问网站之后往往不会立即释放内存资源。)
    2、设置应用程序池的回收时间,默认为1720小时,可以根据情况修改。同时,设置同时运行的w3wp进程数目为1。再设置当内存或者cpu占用超过多少,就自动回收内存 。3、设置固定时间加收进程,比如在凌晨1:00至9:00之前访问人数都比较少,影响很少小,可以设定每天在这个时间段内进行内存回收,以减少服务器因为内存不足带来的影响。设定固定的时间在IIS6中没有限制次数,可以根据实际情况来设定时间比如:晚上12:00,8:00,12:30,6:30等时间段时间有效的进程池资源回收。
    一般来说,这样就可以解决了。但仍然会出现个别网站因为程序问题,不能正确释放。
      

  11.   

    我现在想用Loadrunner测试一下,有没有老大指点一二,如何测
      

  12.   

    我是用的sql2000,然后数据库操作都是用的sqlhelper.cs
      

  13.   

    我的所有sql数据库操作都是通过从下这个类,请各位看看有没用内存泄漏或其它问题?请指正!!!using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Text;
    using System.Data;
    using System.Data.SqlClient;
    using System.Configuration;
    namespace App.Data.DBUtility
    {
        public abstract class SqlHelper
        {
            public static readonly string connectionString = "server=.;database=App;user id=xxx;password=xxx123;Max Pool Size = 512;";
            private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());
            public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
            {            SqlCommand cmd = new SqlCommand();
                cmd.CommandTimeout = 180;
                using (SqlConnection conn = new SqlConnection(connectionString))
                {
                    PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
                    int val = cmd.ExecuteNonQuery();
                    cmd.Parameters.Clear();
                    return val;
                }
            }        public static int ExecuteNonQuery(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
            {            SqlCommand cmd = new SqlCommand();
                cmd.CommandTimeout = 180;
                PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
                int val = cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();
                return val;
            }        public static int ExecuteNonQuery(SqlTransaction trans, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
            {
                SqlCommand cmd = new SqlCommand();
                cmd.CommandTimeout = 180;
                PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters);
                int val = cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();
                return val;
            }        public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
            {
                SqlCommand cmd = new SqlCommand();
                cmd.CommandTimeout = 180;
                SqlConnection conn = new SqlConnection(connectionString);            try
                {
                    PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
                    SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                    cmd.Parameters.Clear();
                    return rdr;
                }
                catch
                {
                    conn.Close();
                    throw;
                }
            }        public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
            {
                SqlCommand cmd = new SqlCommand();
                cmd.CommandTimeout = 180;
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
                    object val = cmd.ExecuteScalar();
                    cmd.Parameters.Clear();
                    return val;
                }
            }        public static object ExecuteScalar(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
            {            SqlCommand cmd = new SqlCommand();
                cmd.CommandTimeout = 180;
                PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
                object val = cmd.ExecuteScalar();
                cmd.Parameters.Clear();
                return val;
            }        public static void CacheParameters(string cacheKey, params SqlParameter[] commandParameters)
            {
                parmCache[cacheKey] = commandParameters;
            }        public static SqlParameter[] GetCachedParameters(string cacheKey)
            {
                SqlParameter[] cachedParms = (SqlParameter[])parmCache[cacheKey];            if (cachedParms == null)
                    return null;            SqlParameter[] clonedParms = new SqlParameter[cachedParms.Length];
                for (int i = 0, j = cachedParms.Length; i < j; i++)
                    clonedParms[i] = (SqlParameter)((ICloneable)cachedParms[i]).Clone();            return clonedParms;
            }        private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms)
            {            if (conn.State != ConnectionState.Open)
                    conn.Open();            cmd.Connection = conn;
                cmd.CommandText = cmdText;            if (trans != null)
                    cmd.Transaction = trans;            cmd.CommandType = cmdType;            if (cmdParms != null)
                {
                    foreach (SqlParameter parm in cmdParms)
                        cmd.Parameters.Add(parm);
                }
            }
        }
    }
      

  14.   

    感觉我的程序是有问题,服务器w3wp.exe  占500M内存,sql占800M内存,cpu基本还不多,就感觉w3wp.exe 根本不释放内存
      

  15.   


    上面不是写了“内容1个G”不就是W3wp.exe超过1GB了? 那肯定会回收,回收到500MB左右吧