У меня есть метод GetProducts, который возвращает 20 продуктов.Создание каждого продукта занимает много времени (много ресурсов из разных мест).
Вы бы порекомендовали создать 20 различных потоков (используя очередь пула потоков) для создания каждого продукта?
Повредит ли это серверу при большой нагрузке?У моего приложения есть риск оказаться под высокой нагрузкой.
Причина, по которой я это поднимаю, заключается в том, что я фактически реализовал нечто подобное, и во время выполнения нагрузочных тестов мой сервер оказался на коленяхи требует полной перезагрузки, чтобы вернуться к нормальной работе.
Есть ли подход, который мне не хватает?Я делаю это совершенно неправильно?Должен ли я придерживаться синхронной обработки?
ПРИМЕЧАНИЕ : При выполнении моего нагрузочного теста память сервера использовалась слишком часто, а иногда и возникала ошибка (серверу не хватало памяти).Сборщик мусора работает недостаточно быстро?
Кроме того, мои продукты загружаются с коммерческого сервера (который кеширует себя), но у меня есть много ресурсов, которые необходимо подключить к продукту (изображения,документы, обзоры и т. д.).
Кроме того, моя архитектура представляет собой двухуровневую установку с веб-интерфейсом, полностью работающим на сервисах wcf (который выполняет многопоточность).Уровень wcf - это то, что становится калекой.Серверы являются виртуальными на 8-ядерном сервере с выделенным ГБ оперативной памяти.
ЛИЧНОЕ ПРИМЕЧАНИЕ У меня такое чувство, что я злоупотребляю многопоточностью.Вызов «GetProducts» должен быть асинхронным, но «GetProducts» НЕ ДОЛЖЕН выполнять 20 асинхронных операций.