iis6,单做的应用程序池
网站不能访问时,服务器的w3wp占cpu50%,内容1个G,sql也占700多M,cpu20%想问一下如何设置应用程序池中的参数?请朋友按应用程序池的每一个选项告诉我,我是小菜,非常感谢大家帮助!!!!!
网站不能访问时,服务器的w3wp占cpu50%,内容1个G,sql也占700多M,cpu20%想问一下如何设置应用程序池中的参数?请朋友按应用程序池的每一个选项告诉我,我是小菜,非常感谢大家帮助!!!!!
解决方案 »
- 关于Asp.net中的 border属性的过时问题
- 网站为什么需要这么多控件,有什么更好的解决方法吗?
- access数据库连接问题
- 请教一个简单的xsl的问题
- 谁知道这个效果如何实现的
- asp.net Forums问题
- 最后十分 提个问题 关于RadioButtonList 方面的???
- vs.net 2003启动ASP.NET项目时提示我的.net 版本不是1.1
- 新手求助 - 链接数据库登陆验证问题
- 网站页面经常出现:Object reference not set to an instance of an object.
- 【求救,大侠们】MVC2中 如何将dropdownlist选中的值传送到action中
- 如何在IE关闭的时候,发出提示
1. 程序代码造成
2.Sql Server 造成第一种可能,你就要优化你的网站程序啦
第二种可能,在完成第一种可能的情况下,进一步减少数据库操作。
SQL数据读取优化 缓存技术 等等
至于CPU的问题如果一直是50%以上,那程序肯定有问题!
网站不能访问时,服务器的w3wp占cpu50%,内容1个G,这个很可能程序里面有问题,特别是CPU占用这么高。像Application/Session之类都是比较吃内存的,检查是否有非托管对象没有即时释放,程序逻辑结构设计是否合理sql也占700多M,cpu20% DBS占用内存多一些,如果经常访问的库和表比较多还比较正常
程序的问题,看看是因为访问量太大的问题吗。
string str1=str2+str3;
如果有这样的代码的话,请用StringBuilder你的CPU不断在回收内存哦。
可以做以下配置:
1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。(进程池越多越占用内存,由于访问网站之后往往不会立即释放内存资源。)
2、设置应用程序池的回收时间,默认为1720小时,可以根据情况修改。同时,设置同时运行的w3wp进程数目为1。再设置当内存或者cpu占用超过多少,就自动回收内存 。3、设置固定时间加收进程,比如在凌晨1:00至9:00之前访问人数都比较少,影响很少小,可以设定每天在这个时间段内进行内存回收,以减少服务器因为内存不足带来的影响。设定固定的时间在IIS6中没有限制次数,可以根据实际情况来设定时间比如:晚上12:00,8:00,12:30,6:30等时间段时间有效的进程池资源回收。
一般来说,这样就可以解决了。但仍然会出现个别网站因为程序问题,不能正确释放。
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);
}
}
}
}
上面不是写了“内容1个G”不就是W3wp.exe超过1GB了? 那肯定会回收,回收到500MB左右吧