Не столько ответ, сколько наблюдение:
Есть так много разных вещей, которые могут повлиять на это, это не смешно.Система, которую вы описали, звучит так, как будто есть сотни разных вещей, которые вы должны проверить / посмотреть.
В первую очередь, они будут отслеживать каждую утечку памяти.Который, вы начали, но я предлагаю вам просто продолжать идти.
Одна заметка, касающаяся Firefox и «кеша».Вы говорите о файле подкачки Windows;Windows контролирует это.Он имеет свои собственные правила в отношении того, когда данные выгружаются на диск, чтобы освободить оперативную память.Я полагаю, что это красная сельдь, и вы не хотите идти по этому пути.Одна из причин, по которой данные переносятся на диск - это отсутствие использования.С Firefox и другими приложениями это довольно часто;из вашего описания ваше программное обеспечение не ведет себя так.
Я бы посмотрел на то, насколько напряжены ваши циклы, и дали ли вы даже .NET-среде возможность выполнить очистку.Похоже, что это вызывает проблему при использовании, так что это, вероятно, нормально.
В любом случае, я не совсем понимаю, в чем проблема.Вы упоминаете, что график является результатом запуска слишком большого количества потоков. Хорошо, это ожидаемо.Каждый поток, который вы запускаете, будет использовать ресурсы;запуск большого количества из них по своей природе потребует большого количества ресурсов ... В какой-то момент система не сможет запустить больше, и это приведет к сбою.
Некоторые проблемы, влияющие на вашу лабораторию по сравнению с производственными системами: разные уровни исправлений windows / .net / etc, разные операционные системы (например, 2008 vs 2008 R2 сильно отличается), разные конфигурации ЦП и / или памяти.С тем, что вы дали, на самом деле ничего не сказано.
Чтобы воспроизвести событие, вам необходимо иметь точно соответствующее оборудование и программное обеспечение.Тогда вам понадобятся идентичные входные данные.Если какой-либо из них выключен, вы могли бы быть в состоянии приблизиться.Первое, что нужно сделать, это убедиться, что все загруженные и входные данные идентичны.Это легко контролировать.Затем начните играть.
Небольшое обновление.Я прочитал некоторые из перечисленных вами вопросов.
Чтобы определить оптимальное количество потоков для вашей системы, вы должны выполнить профили на целевом аппаратном / программном обеспечении.Желательно на самой системе.Это займет значительное количество руки, чтобы добраться до этой точки.Единственный способ автоматизировать это - иметь сторожевой таймер, который проверяет, как все работает, и увеличивает потоки или уменьшает их в зависимости от частоты отказов.Примерно так, как некоторые компьютеры-энтузиасты теперь могут автоматически разгоняться: продолжайте нагревать, пока все не растает;затем отключите 1 бит.
Конечно, вы все равно можете столкнуться с проблемами, если какой-то процент потоков выйдет за пределы того, что вы обычно разрешаете, ИЛИ, если какой-либо другой программный продукт запускается и забирает ресурсы.
tldr ;Вы должны вручную настроить это на машине, на которой это будет жить.Будьте готовы к частой перестройке.