Я думаю, что проблема в том, что стандартные подпрограммы со случайными числами не являются потокобезопасными. Таким образом, каждый виртуальный пользователь (VU) получает одинаковое случайное начальное значение и, следовательно, одинаковые случайные числа. См. здесь и здесь для более подробных объяснений.
Код для CreateNewRandomString
не показан в вопросе, но он, вероятно, использует основной код случайного числа C #, который имеет проблему, описанную выше. Решение состоит в том, чтобы использовать более безопасное случайное число. Этот вопрос дает некоторые идеи о лучших генераторах случайных чисел.
Я использовал код, основанный на следующем, в нескольких тестах производительности:
public static class RandomNumber
{
private static Random rand = new Random(DateTime.Now.Millisecond);
private static object randLock = new object();
/// <summary>
/// Generate a random number.
/// </summary>
/// <param name="maxPlus1">1 more than the maximum value wanted.</param>
/// <returns>Value between 0 and maxPlus1-1 inclusive. Ie 0 .le. returned value .lt. maxPlus1</returns>
public static int Next(int maxPlus1)
{
int result;
lock (randLock)
{
result = rand.Next(maxPlus1);
}
return result;
}
}
В приведенный выше код должно быть просто добавить метод создания строки, который генерирует искомую строку в операторе lock{ ... }
.
Часть вопроса, в которой говорится «перезаписывать параметр контекста RandomName при каждом запуске. Поэтому, когда мои запросы фактически выполняются, они используют одно и то же случайное имя» неправильно понимает, что происходит. Каждый VU получает свой собственный набор CP, просто случайные числа одинаковы.