В настоящее время у меня есть веб-приложение, в котором около 500 пользователей.Чего я не ожидал, так это того, что веб-приложение работает ужасно при такой нагрузке.Посещение любой страницы приводит к минутам ожидания.По сути, каждый пользователь, пользуясь основной функцией веб-приложения, вызывает процесс, в котором я считываю несколько байтов с другого веб-сервера, а затем перенаправляю эти данные в браузер пользователей.Страница работает нормально, пока не достигнет определенной нагрузки около 200-300 одновременных процессов загрузки, как описано ранее.
Я использую IIS 7.5 и ASP.NET (4).Для доступа к базе данных я использую LINQ TO SQL.Я уже настроил IIS и удалил все ограничения, такие как максимальное число одновременных операций на процессор и т. Д. Я потерял надежду на то, что конфигурация IIS в этом случае проблематична.Я боюсь, что мой код дает такие результаты для IIS или что даже такой подход является основной причиной этой проблемы.
В настоящее время он работает следующим образом:
Пользователь посещает EG.aspx
EG.aspx использует .NET HTTP Post и GET-запросы для авторизации на другом веб-сервере.
EG.aspx открывает поток для чтения со второго веб-сервера (загрузка файла)
EG.aspx читает 1024 байта со второго веб-сервера и записывает эти 1024 байта в браузер
Все заголовки и т. Д. Установлены правильно.Я не использую новые темы во время этого процесса.Это просто длинный метод, выполняющий все эти шаги.Загрузка файлов довольно большая (около 100 МБ).В течение всего этого времени, необходимого для передачи такого файла пользователю, на странице выполняется указанный процесс.Каждый пользователь может запустить этот процесс несколько раз (загрузить несколько файлов).
Является ли количество потоков проблемой?Можно ли каким-то образом добиться таких же результатов (ваш веб-сервер загружает файлы и отправляет их клиенту, не кэшируя их на диске), используя другой подход?Что бы это был за подход?