网站不到一天就cpu占用过高,IIS如何设置

ideawork126 2010-12-08 03:46:42
iis6,单做的应用程序池
网站不能访问时,服务器的w3wp占cpu50%,内容1个G,sql也占700多M,cpu20%

想问一下如何设置应用程序池中的参数?

请朋友按应用程序池的每一个选项告诉我,我是小菜,非常感谢大家帮助!!!!!
...全文
885 39 打赏 收藏 转发到动态 举报
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
jialine0426 2010-12-14
  • 打赏
  • 举报
回复
[Quote=引用楼主 ideawork126 的回复:]
iis6,单做的应用程序池
网站不能访问时,服务器的w3wp占cpu50%,内容1个G,sql也占700多M,cpu20%

想问一下如何设置应用程序池中的参数?

请朋友按应用程序池的每一个选项告诉我,我是小菜,非常感谢大家帮助!!!!!
[/Quote]

上面不是写了“内容1个G”不就是W3wp.exe超过1GB了? 那肯定会回收,回收到500MB左右吧
ideawork126 2010-12-13
  • 打赏
  • 举报
回复
楼上朋友的办法,可行吗?!!!!!!
a13540601351 2010-12-12
  • 打赏
  • 举报
回复
1.兄弟我推荐你另外的一个办法.已经好了的程序就不要去改了
2.去做一个简单的机器管理工具.来定时的清除内存.线程,以及磁盘缓存文件就可以了.这类软件如果有放心的你直接下载下来用就可以了
ideawork126 2010-12-12
  • 打赏
  • 举报
回复
楼上的朋友,看到我上面的代码了吗?有问题吗?我主要是不知道问题出在哪?
porschev 2010-12-12
  • 打赏
  • 举报
回复
应该和设置关系不大。。。

检查代码。。。
ideawork126 2010-12-12
  • 打赏
  • 举报
回复
感觉我的程序是有问题,服务器w3wp.exe 占500M内存,sql占800M内存,cpu基本还不多,就感觉w3wp.exe 根本不释放内存
ideawork126 2010-12-12
  • 打赏
  • 举报
回复
自己顶!期待高手指点!!!!!
LinChangPeng 2010-12-12
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 jialine0426 的回复:]
服务器的w3wp占cpu50%,内容1个G

是W3wp.exe的大小吗?

如果你没改过Machine.config,默认超过840MB就会回收,我觉得你的程序代码写的有问题,有大对象的存在,比如说string超过85KB,就会识别为大对象,会复制到另外一个地方去处理。你先查查有没有这样的代码
string str1=str2+str3;
如果有这样的代码的话,请用StringBui……
[/Quote]
+1
ideawork126 2010-12-12
  • 打赏
  • 举报
回复
我的所有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);
}
}
}
}
ideawork126 2010-12-12
  • 打赏
  • 举报
回复
我是用的sql2000,然后数据库操作都是用的sqlhelper.cs
baysos 2010-12-11
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 ideawork126 的回复:]
引用 8 楼 wuyq11 的回复:
检查相关资源是否释放,设置应用程序池的使用率
修改代码
压力测试

如何作压力测试!?
[/Quote]
写个多线程并发请求程序~~模拟一下高并发状态下的情态
int64 2010-12-11
  • 打赏
  • 举报
回复
尽量减少数据库的操作,数据库操作完毕后要断开连接,
存储过程要优化。。。。。。。。。。
sxmonsy 2010-12-11
  • 打赏
  • 举报
回复
在IIS6下,经常出现w3wp的内存占用不能及时释放,从而导致服务器响应速度很慢。

由于内存释放不及时严重影响到服务器的正常运营,建议采用以下配置,但请考虑自身服务器的使用情况。


可以做以下配置:


1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。(进程池越多越占用内存,由于访问网站之后往往不会立即释放内存资源。)


2、设置应用程序池的回收时间,默认为1720小时,可以根据情况修改。同时,设置同时运行的w3wp进程数目为1。再设置当内存或者cpu占用超过多少,就自动回收内存 。

3、设置固定时间加收进程,比如在凌晨1:00至9:00之前访问人数都比较少,影响很少小,可以设定每天在这个时间段内进行内存回收,以减少服务器因为内存不足带来的影响。设定固定的时间在IIS6中没有限制次数,可以根据实际情况来设定时间比如:晚上12:00,8:00,12:30,6:30等时间段时间有效的进程池资源回收。


一般来说,这样就可以解决了。但仍然会出现个别网站因为程序问题,不能正确释放。

kevin_520_kevin 2010-12-11
  • 打赏
  • 举报
回复
一般缓存技术可以很大的提高你网站的性能的,看LZ对上边的压力测试,缓存技术都不太清楚,还是网上搜搜看看的
jialine0426 2010-12-11
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 ideawork126 的回复:]
有没改善程序的书,比如说都哪些编辑方法不对,应该如何写程序或改善程序的书(asp.net c#)
[/Quote]
基本没有,因为生产环境千变万化,不大可能写的。
所以我建议你抓个内存,然后将内存文件交给高手看一下,呵呵
ideawork126 2010-12-11
  • 打赏
  • 举报
回复
有没改善程序的书,比如说都哪些编辑方法不对,应该如何写程序或改善程序的书(asp.net c#)
jialine0426 2010-12-11
  • 打赏
  • 举报
回复
服务器的w3wp占cpu50%,内容1个G

是W3wp.exe的大小吗?

如果你没改过Machine.config,默认超过840MB就会回收,我觉得你的程序代码写的有问题,有大对象的存在,比如说string超过85KB,就会识别为大对象,会复制到另外一个地方去处理。你先查查有没有这样的代码
string str1=str2+str3;
如果有这样的代码的话,请用StringBuilder

你的CPU不断在回收内存哦。
vistayangxi 2010-12-11
  • 打赏
  • 举报
回复
可能是代码存在内存泄露,可以把每个网站都设置单独的线程池。利用系统自动回收。
ideawork126 2010-12-11
  • 打赏
  • 举报
回复
我现在想用Loadrunner测试一下,有没有老大指点一二,如何测
ideawork126 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wuyq11 的回复:]
检查相关资源是否释放,设置应用程序池的使用率
修改代码
压力测试
[/Quote]
如何作压力测试!?
加载更多回复(14)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧