Вот моя примерная программа для веб-сервера сервера и на стороне клиента. Я столкнулся с проблемой производительности strnage, которая, даже если я увеличиваю количество потоков для вызова веб-сервисов, производительность не улучшается. В то же время потребление CPU/памяти/сети с панели производительности диспетчера задач невелико. Мне интересно, что такое узкое место и как его улучшить?многопоточная проблема с производительностью для вызова веб-службы
(Мой опыт испытаний, удвоит число потоков будет почти в два раза общее время отклика)
стороне клиента:
class Program
{
static Service1[] clients = null;
static Thread[] threads = null;
static void ThreadJob (object index)
{
// query 1000 times
for (int i = 0; i < 100; i++)
{
clients[(int)index].HelloWorld();
}
}
static void Main(string[] args)
{
Console.WriteLine("Specify number of threads: ");
int number = Int32.Parse(Console.ReadLine());
clients = new Service1[number];
threads = new Thread[number];
for (int i = 0; i < number; i++)
{
clients [i] = new Service1();
ParameterizedThreadStart starter = new ParameterizedThreadStart(ThreadJob);
threads[i] = new Thread(starter);
}
DateTime begin = DateTime.Now;
for (int i = 0; i < number; i++)
{
threads[i].Start(i);
}
for (int i = 0; i < number; i++)
{
threads[i].Join();
}
Console.WriteLine("Total elapsed time (s): " + (DateTime.Now - begin).TotalSeconds);
return;
}
}
стороне сервера:
[WebMethod]
public double HelloWorld()
{
return new Random().NextDouble();
}
заранее спасибо, George
Обновите исходный вопрос, а не отправляйте ответы на свой вопрос. –