проблема производительности записи файла веб-сайта - PullRequest
0 голосов
/ 16 июля 2009

МЫ используем сторонний инструмент отчетов. Инструмент отчетов использует active-x. Сначала мы генерируем и запускаем запрос в соответствии с фильтрами, затем создается один файл отчета, который включает данные (результат запроса). Затем клиент загружает файл отчета. Но операция записи файла - большая проблема для нас. Что мы можем сделать? Можно ли перевести операции записи файлов в другое приложение и перенести это приложение в другой пул приложений? Есть ли у вас предложения? А как работает веб-сервер, работает? Например, есть 100 клиентов, которые подключаются к веб-серверу, и они пытаются запустить некоторые отчеты. Таким образом, веб-сервер должен создать 100 файлов для этих клиентов. Так что, если данные отчета очень велики и другие ожидают его завершения?

Ответы [ 2 ]

0 голосов
/ 16 июля 2009

Для больших отчетов вы можете поместить запросы в очередь обработки и попросить ваших клиентов подождать несколько минут, пока они не будут готовы. Мгновенное создание отчетов для больших наборов данных создает большую нагрузку на вашу систему и затрудняет балансировку нагрузки.

Возможно, ваш веб-сайт перенаправляет запросы в очередь, которая в конечном итоге будет обрабатываться отдельными серверами, генерирующими отчеты. Вы можете добавить больше этих серверов для обработки элементов в очереди, и эта обработка не повлияет на пользователей веб-сайта, им просто придется жить с отчетами, которые не являются мгновенными.

Также подумайте об обработке, которую вы можете выполнить заранее, чтобы вся обработка не была «по требованию». Если они получают одни и те же отчеты каждый день, разрешите их планировать, чтобы ваши клиенты не чувствовали, что они слишком долго ждут отчетов.

Тяжелый ввод-вывод должен быть выгружен на серверы, которые не обрабатывают клиентские веб-запросы.

0 голосов
/ 16 июля 2009

Ваша проблема не очень ясна. Вы сказали, что написание файла - большая проблема, что вы подразумеваете под этим? Это медленно или как?

Ваше приложение предназначено для обслуживания одного клиента за раз? Если нет, то почему вы говорите, что другие ждут его завершения?

Я предполагаю, что ваше приложение может одновременно обслуживать несколько клиентов. Если загрузка высокая, запись файла будет затронута, поскольку IO замедлится. Вам необходимо сбалансировать нагрузку приложения, где нагрузка распределяется между экземплярами, и таким образом можно улучшить IO. Конечно, экземпляры должны быть на разных машинах, так как проблема заключается в IO. Могут быть и другие проблемы, связанные с тем, что логика требует значительных ресурсов процессора и памяти. Вам нужно профилировать свое приложение, чтобы найти все проблемы.

...