webservice性能的问题
我写了一个webservice,里面什么操作也没有,架设在ii6上
[WebMethod]
public void Insert(string name)
{
// BusinessLogic.Test.Test t = new BusinessLogic.Test.Test();
// t.InsertSQL(name);
}
有一个客户端,用多线程模拟并发访问webservice,每个线程访问50次webservice,每次访问睡眠120毫秒,下面是每个线程操作的代码
public void InsertSqlServerWithWebService()
{
DateTime time1 = DateTime.Now;
try
{
zhuoxin.SQLSERVERService service = ServiceManager.Service;
for(int i = 0 ; i < nLoopCount ; i++)
{
//IAsyncResult res= service.BeginInsert(Thread.CurrentThread.Name +"-"+ i.ToString() , null , null);
//service.EndInsert(res);
service.Insert(Thread.CurrentThread.Name +"-"+ i.ToString());
//ServiceManager.Service.Insert(Thread.CurrentThread.Name +"-"+ i.ToString());
Thread.Sleep(Form1.TIME_OUT);
}
TimeSpan span = DateTime.Now - time1;
Log(Thread.CurrentThread.Name + ":" + span.TotalSeconds.ToString());
}
catch(Exception e)
{
Log(e.Message);
}
}
下面是启动线程的代码
private void button8_Click(object sender, System.EventArgs e)
{
ServiceManager.nPoolBottom = 0;
nLoopCount = int.Parse(txtLoopCount.Text);
// InsertSqlServerWithWebService();
TIME_OUT = int.Parse(textBox2.Text);
int nThreadCount = int.Parse(textBox1.Text);
Thread[] threads = new Thread[nThreadCount];
for(int i = 0 ; i < nThreadCount ; i++)
{
Thread t = new Thread(new ThreadStart(InsertSqlServerWithWebService));
t.Name = i.ToString();
threads[i] = t;
}
foreach(Thread t in threads)
{
t.Start();
}
}
现在的问题是,如果我用一个线程跑时间大概是7秒左右,其中包括一个6秒的睡眠时间
我把这个线程数增加到10个,基本保持不变,这样一直增加到17个基本都没有问题
但是再向上增加,时间就开始呈线性增长了
30个时要14秒,40个要23秒左右,50个要30秒左右(以上时间,都是每个线程执行50次webservice调用,每次调用后睡眠120毫秒)
为什么这么几个并发就把性能降下来了,有没有办法解决