Кэширование запросов на уровне веб-приложений ColdFusion - PullRequest
1 голос
/ 15 декабря 2008

У нас есть несколько веб-серверов, на каждом из которых установлена ​​одна версия ColdFusion. Кластер имеет балансировщик нагрузки перед ним.

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

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

Надеюсь, я дал понять:)

Ура, Ciarán

Ответы [ 5 ]

3 голосов
/ 15 декабря 2008

Вы можете попробовать memcached попробовать.

2 голосов
/ 31 декабря 2008

Я бы посмотрел на memcached - здесь есть проект с открытым исходным кодом для его интеграции в ColdFusion: cfmemcached .

Если вы используете Railo, я слышал, что у него также есть область действия "кластер".

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

1 голос
/ 07 апреля 2009

Решено использовать EHCache на каждом из наших веб-серверов, так как он позволяет частичное кэширование страниц и может быть расширен до сервера централизованного кэширования, например memcached. Очень доволен этим до сих пор.

Большое спасибо за все предложения!

0 голосов
/ 17 января 2009

Область сеансов может быть кластеризована в ColdFusion, если вы включите сеансы j2ee. Но все, что делает кластерная область - это копирует данные на серверы. Таким образом, запросы все равно будут скопированы на все 3 сервера. Таким образом, вы вернетесь туда, где вы сейчас находитесь.

Однако я бы просто использовал атрибут CachedWithin в cfquery вместо использования области приложения. Таким образом, вы позволяете движку CF выполнять управление кешем. Предотвращение потери памяти, и вы не добавляете накладные расходы на копирование большого количества данных между серверами.

0 голосов
/ 14 января 2009

вы можете кластеризовать и распределить область применения между серверами, но вы должны использовать корпоративную версию ColdFusion. Больше информации здесь: http://livedocs.adobe.com/coldfusion/7/htmldocs/00001774.htm

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