我公司现在运行的网上到货系统最近每天都会发生1-2次的停止服务,
具体描述:
程序为IIS的虚拟目录,运行一段时间后会发生不能使用,IIS的其他虚拟目录可以正常使用,数据库也正常,只要在任务管理器中结束aspnet_wp.exe后就可以正常使用。在出现故障时候我重启IIS和SQL SERVER都不能解决,只有结束aspnet_wp.exe.请教出现这种问题的可能原因。分不够可以再加!急于解决
具体描述:
程序为IIS的虚拟目录,运行一段时间后会发生不能使用,IIS的其他虚拟目录可以正常使用,数据库也正常,只要在任务管理器中结束aspnet_wp.exe后就可以正常使用。在出现故障时候我重启IIS和SQL SERVER都不能解决,只有结束aspnet_wp.exe.请教出现这种问题的可能原因。分不够可以再加!急于解决
在IIS的应用程序池的属性在把回收和性能的一些选项去掉试试
sqlserver内存基本上维持在90-100M内存。
aspnet_wp.exe在运行2个小时后能达到100M-170M之间的内存消耗。综合大家的意见猜测可能的情况:
1、程序有死循环
2、连接未及时关闭
3、Cache向大家请教
1、如何跟踪测试程序,从而发现死循环或未关闭连接?
2、使用dataset是不是不用手动关闭连接,因为我记得在dataAdapter填充后即自动关闭连接。
public static bool checkuser(string yhbm,string pageadd)
{
string sql="SELECT c.ljdz FROM WHERE (yhbm = '"+yhbm+"')";
dbserver db = new dbserver();
db.DBOpen(true);
SqlDataReader dr=db.exeSqlForDataReader(sql);
if(dr.Read())
return true;
else
return false;
db.DBOpen(false);//我郁闷的就是这一行,如果不写就是没关闭,写了又总是提示
//e:\web\ywnweb\com\comm.cs(48,4): warning CS0162: 检测到无法访问的代码,
}
using(sqlconnection con = new sqlconnection("链接字符串"))
{
你的操作内容.这样的话就不需要再刻意的调用CLOSE事件了。
}
public static bool checkuser(string yhbm,string pageadd)
{
string sql="SELECT c.ljdz FROM WHERE (yhbm = '"+yhbm+"')";
//从这里看起来你的数据库链接是一个全局的变量。你这样用看上去很美很方便。但是在用户量一大保证出错。别问我为什么反正我大流量测试过.正常是在函数里面就创建这样其实是最节约服务器的资源
dbserver db = new dbserver();
db.DBOpen(true);
SqlDataReader dr=db.exeSqlForDataReader(sql);
if(dr.Read())
return true;
else
return false;
db.DBOpen(false);
}
反正我们公司我现在要求是全部是在调用的时候动态的创建一个CONNECTION。然后进行调用。你这样封装必然不稳定。但是看上去很符合编码要求很美很规范。你这样资源没有办法完全回收必然出错。
"只要在任务管理器中结束aspnet_wp.exe后就可以正常使用"可能是这个原因.
原来代码:
cn.Open();
SqlCommand cmd = new SqlCommand(sql,cn);
SqlDataReader dr = cmd.ExecuteReader();
if(dr.Read())
{
return true;
}
else
{return false;}
现在代码:
cn.Open();
SqlCommand cmd = new SqlCommand(sql,cn);
SqlDataReader dr = cmd.ExecuteReader();
if(dr.Read())
{
dr.Close();
cn.Close();
return true;
}
else
{return false;}
这个代码告诉我们先关闭连接再返回bool。
try
cn.Open();
....
return true
catch ex as exction
return false
finally
dr.Close();
cn.Close
end try
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpgenref/html/gngrfProcessmodelSection.asp将其中的timeout指定时间,不要使用Infinite估计通过以上两种方法就应该能解决,谢谢大家!结贴!!