关于数据库insert操作时的w3wp.exe的cpu占用率问题
blw 2010-11-11 04:18:33 一个在线测试软件,最大并发量的情况是可能会有千人左右同时交卷(即向数据库提交答案),想找个有效降低交卷时cpu占用率的法子,上一个贴子在这里
http://topic.csdn.net/u/20101108/15/15622e57-06e6-4843-b795-8b482932ed79.html?862987754
目前我作了个实验程序来模拟
---------------------
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)//循环50次,每次用一个独立的线程来模仿某一用户的操作
{
for (int i = 0; i < 50; i++)
{
Thread thInsert = new Thread(new ThreadStart(this.insert));
thInsert.Start();
thInsert.Join();
}
}
}
private void insert()
{
SqlConnection conn = GetSqlConnection();
SqlCommand comm = new SqlCommand();
comm.Connection = conn;
comm.Connection.Open();
SqlTransaction ts = comm.Connection.BeginTransaction();
comm.Transaction = ts;
comm.CommandText = "insert into Vote (B) values('" + a + "');"; //a是一个大概500长度的varchar
comm.ExecuteNonQuery();
ts.Commit();
comm.Connection.Close();
GC.Collect();
System.Threading.Thread.Sleep(5);
}
------------------------------------------
在最后加入System.Threading.Thread.Sleep(5);这句代码的情况下
我自己本机的cpu占用率从不加时的15%左右降到只有2%
本机环境:winxp cpu:e6320 ram:2g
现在奇怪的问题来了,一模一样的程序布署到双至强cpu的服务器上时,加不加sleep这句代码cpu占用率都差不多,基本都在15%左右,有时加的情况下占用率更高。我试过调整sleep的时间,但结果也基本一样
服务器环境:win2003 cpu:xeon e5410*2 ram:4g
上网查了不少资料,仍不得解,还请各位牛人给个意见