Управление приоритетами выполнения и временем истечения запроса в вашем веб-приложении - PullRequest
2 голосов
/ 16 марта 2010

Некоторые установки, которые запускают наши приложения, могут оказаться под большим напряжением в напряженный день. Наши клиенты спрашивают нас, есть ли способ управлять приоритетами в нашем приложении. Например, в типичном приложении для интернет-банкинга банки заинтересованы в том, чтобы форма «Перевод денег» реагировала, а страница «Выписка» гораздо менее критична. Неспособность перевести деньги является прямой потерей для банка, а невозможность представить выписку или что-либо подобное может быть исправлено извинением. AFAIK, вы также не можете управлять различными запросами или тайм-аутами сеансов в типичном веб-приложении, это одно значение для всего вашего веб-приложения.

Управление приоритетом и сроком действия сообщения является типичной функцией для многих платформ промежуточного программного обеспечения. Нечто подобное может быть полезно и для веб-интерфейса. Предоставляют ли какие-либо функции веб-серверы (java или .net) или веб-фреймворки? Как бы вы пошли на его реализацию, если бы вам пришлось идти на самотек?

Ответы [ 2 ]

1 голос
/ 21 марта 2010

Это довольно широкая тема (которая может также подходить для ServerFault ) и представляет собой ряд вариантов, которые следует учитывать как в приложении, так и в платформе и сетевой среде, в которой оно работает. Есть так много переменных (например, процессор, память, пропускная способность и доступ к базе данных), что почти невозможно найти окончательный ответ на ваш вопрос. Но вот несколько примеров стратегий, которые вы можете использовать, и в обеих из них предполагается, что ваше приложение не имеет состояния, и вы можете разделить его функциональные возможности на несколько частей физически или виртуально (изолируя транзакции от операторов в вашей ситуации). Если эти предположения не верны, уточните вопрос.

  • Вы можете достичь этого поведения в течение IIS. Вы должны разделить приложение на несколько сайтов (или сделать это практически путем создания нескольких копии заявки). модель домен / поддомен идеальна. Ваши транзакции могут произойти на www.mysite.com, в то время как заявления генерируется на docs.mysite.com. Вы может тогда ограничить соединения и пропускная способность дросселя на нижней приоритетное приложение. Если ты используя ASP.NET, вы также можете ограничить приложение с более низким приоритетом для конкретных Ядра процессора , оставляя другие неограниченными.

  • Так как вы имеете дело с высоким Объем приложения, вы, вероятно, используя балансировщик нагрузки для распространения трафик через несколько веб-серверов. Если ваше приложение действительно без гражданства (то есть, не использовать противный переменные сеанса и т. д.), вы можете скорее всего воспользуйся своей нагрузкой балансировщик для выполнения трафика расстановка приоритетов для вас в одном или нескольких пути. Например, скажем, вы иметь N интерфейсных веб-серверов (где N> 2). Вы может запустить два отдельных пула в распределитель нагрузки для распределения нагрузки по транзакции более 2/3 из них и заявления по другой 1/3 с между ними настроено аварийное переключение. (В зависимости от вашего балансировщика нагрузки вы можете сделать это на основе пути или HTTP-заголовка, например, даже без разделения приложения.) Это дает вам как отказоустойчивость и расстановка приоритетов. Есть и другие выбор в зависимости от нагрузки Балансир занят, но, надеюсь, это достаточно, чтобы зажечь ваш интерес к перенести проблему в инфраструктуру а не просто оставаться в стенах сервер приложений.

0 голосов
/ 22 марта 2010

Coldfusion позволяет устанавливать время ожидания запроса для каждого запроса.

Apache позволяет устанавливать заголовок expires на основе произвольных условий (например, посещенного URL).

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

Создать свой собственный файл было бы просто, если бы вы знали, как установить приоритеты потоков и некоторые базовые HTTP-заголовки (например, Expires).

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

Рассматривали ли вы просто покупку большего количества ресурсов? За счет затрат на внедрение и поддержание ваших приоритетных схем вы, вероятно, могли бы купить достаточно дополнительных ресурсов, чтобы сделать их избыточными. Если вы не получаете ненужных сообщений каждый второй день, у вас всегда должно быть достаточно ресурсов, чтобы справиться, по крайней мере, с двойной пиковой нагрузкой, или вы просто напрашиваетесь на неприятности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...