Кэшировать ошибки с этим

Обновлено: 22.11.2024

В этом приложении описываются распространенные проблемы, с которыми вы можете столкнуться при использовании OracleAS Web Cache, и объясняется, как их решить. Он содержит следующие темы:

Проблемы и решения

В этом разделе описаны распространенные проблемы и решения. Он содержит следующие темы:

Ошибки запуска

В этом разделе описываются обходные пути для распространенных сбоев при запуске:

Проблема 1. Конфликты портов

При запуске OracleAS Web Cache выполняется проверка конфликта портов. В случае конфликта портов OracleAS Web Cache не запускается, и о конфликтах портов сообщается в файле журнала событий. Ниже показан фрагмент журнала событий с сообщениями о конфликте портов:

Обратите внимание, что последнее сообщение появится только при первом запуске процесса сервера администрирования.

Обычно порты OracleAS Web Cache и исходного сервера конфликтуют. Чтобы разрешить конфликты портов:

Проверьте порт, назначенный OracleAS Web Cache, на странице "Порты" консоли управления Application Server (Домашняя страница Web Cache > вкладка "Администрирование" > "Свойства" > "Веб-кэш" > "Порты") или на странице "Прослушивание портов" OracleAS Web Cache Manager (Порты > Прослушивание порты ).

Если несколько экземпляров OracleAS Web Cache работают на многосетевом узле с несколькими IP-адресами, может возникнуть конфликт портов. В OracleAS Web Cache Manager

Проверьте имена хостов и порты, назначенные исходным серверам, на странице исходных серверов консоли управления сервером приложений (домашняя страница веб-кэша > вкладка «Администрирование» > свойства > приложение > исходные серверы) или в OracleAS Web Cache Manager (исходные серверы, сайты). , и Балансировка нагрузки > Исходные серверы ).

Перезапустите веб-кэш OracleAS.

[25/ноября/2004:19:21:42 +0000] [предупреждение 13305] [ecid: -] Не удалось назначить порт 4000: адрес уже используется [25/ноября/2004:19:21:42 + 0000] [предупреждение 9707] [ecid: -] Не удалось запустить сервер. [25/Nov/2004:19:21:42 +0000] [alert 9609] [ecid: -] Не удалось инициализировать серверный процесс. [25/Nov/2004:19:21:42 +0000] [уведомление 9610] [ecid: -] Сервер закрывается.

Чтобы разрешить этот конфликт портов, измените файл webcache.xml, внутренний файл, содержащий параметры конфигурации, и измените номер порта администрирования. Файл webcache.xml находится в папке $ORACLE_HOME/webcache в UNIX и в папке ORACLE_HOME\webcache в Windows. Ниже показан фрагмент файла webcache.xml со строкой порта администрирования, выделенной жирным шрифтом:

Проблема 2: OracleAS Web Cache Manager недоступен

OracleAS Web Cache Manager не требует строгой проверки. Это особенно проблема, когда процесс сервера администратора закрывается после применения недопустимых изменений конфигурации. В этом случае процесс сервера администрирования не сможет запуститься, а OracleAS Web Cache Manager станет недоступным. Проверьте файл журнала событий на наличие ошибок запуска или средство просмотра событий в Windows.

Чтобы решить эту проблему:

Если вы хотите сохранить внесенные вами изменения конфигурации, отправьте файл webcache.xml в службу поддержки Oracle для устранения неполадок, связанных с недопустимой записью конфигурации.

Не редактируйте этот файл конфигурации вручную, за исключением случаев, описанных в этом руководстве, или по указанию службы поддержки Oracle. Неправильное редактирование этого файла конфигурации может вызвать проблемы в OracleAS Web Cache.

Если вы хотите восстановить предыдущую конфигурацию, запустите команду сброса webcachectl, чтобы восстановить предыдущую версию конфигурации. Утилита opmnctl не предоставляет команду сброса.

Проблема 3. Несоответствие определений Oracle Home

Если определение домашней страницы Oracle в файле конфигурации webcache.xml отличается от определения домашней страницы Oracle в вашей среде, OracleAS Web Cache может не запуститься.

В UNIX вы можете увидеть следующее предупреждающее сообщение в журнале событий:

В Windows вы можете увидеть следующее сообщение:

Во время установки домашняя страница Oracle записывается в атрибут ORACLEHOME элемента CACHE NAME в файле webcache.xml. Дом Oracle указывается с помощью переменной среды $ORACLE_HOME в UNIX и параметра ORACLE_HOME, расположенного в HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE в реестре Windows.

Если есть несоответствие, измените либо атрибут ORACLEHOME в файле webcache.xml, либо настройку домашней среды Oracle.

В среде кластера в файле webcache.xml есть один элемент CACHE NAME для каждого члена кластера. Обязательно измените правильный элемент. После изменения распространите конфигурацию, как описано в «Задача 4. Распространение конфигурации на элементы кластера».

Проблема 4: Привилегированные номера портов

Номера портов меньше 1024 зарезервированы для использования привилегированными процессами в UNIX.Если вы хотите настроить OracleAS Web Cache для прослушивания порта с номером меньше 1024, например порта 80, исполняемый файл webcached должен запускаться с привилегиями root.

Если webcached не запускается от имени пользователя root в конфигурации с привилегированными портами, процесс кэш-сервера не запускается, и в файл журнала событий записываются сообщения, подобные приведенным ниже:

Проблема 5: более 1024 подключений

Чтобы OracleAS Web Cache поддерживал более 1024 подключений в UNIX, исполняемый файл webcached должен запускаться с привилегиями root.

Если webcached не может работать с привилегиями root, процесс сервера кэширования не запускается, и в файл журнала событий записываются сообщения, похожие на следующие выходные данные:

"Запуск webcached с привилегиями root" для получения инструкций по настройке исполняемого файла webcached для запуска с привилегиями root

"Ограничение на количество подключений" для получения дополнительной информации об указании максимального ограничения на количество подключений

Проблема 6. Открытие кошелька

OracleAS Web Cache не может открыть кошелек. Когда OracleAS Web Cache не может открыть кошелек, в файл журнала событий записываются сообщения, подобные приведенным ниже:

Убедитесь, что каталог кошелька существует:

/etc/ORACLE/WALLETS/ имя_пользователя в UNIX

%USERPROFILE%\ORACLE\WALLETS в Windows

Убедитесь, что файл автоматического входа cwallet.sso и файл кошелька ewallet.p12 существуют.

Если эти файлы не существуют, то и кошелька с автоматическим входом в систему не существует. В этом случае создайте кошелек и включите автоматический вход.

Убедитесь, что Oracle Wallet Manager может открыть кошелек.

Если Oracle Wallet Manager не может открыть кошелек, значит кошелек поврежден. В этом случае заново создайте кошелек.

Повторно проверьте журнал событий на наличие ошибок кошелька.

Проблема 7: загрузка файлов объектов библиотеки

Если во время установки или применения нового исправления объектный файл будет поврежден, OracleAS Web Cache не запустится. Вы можете увидеть ошибку, похожую на следующую:

Чтобы устранить эту ошибку, повторно свяжите библиотеку

Установите переменную среды ORACLE_HOME.

Перейдите в каталог $ORACLE_HOME/webcache/lib.

Выполните следующую команду, чтобы повторно связать библиотеку

Если вы используете OracleAS Web Cache с привилегиями root, запустите webcache_setup.sh .

Проблема 8. Ошибка отказа в доступе

Если OracleAS Web Cache запущен пользователем, работающим в другой группе, у которой нет достаточных привилегий для изменения групп пользователей, в файл журнала событий будет отправлено сообщение, подобное следующему:

Пользователь root — это единственный пользователь, которому разрешено изменять идентификатор группы пользователей.

Решение этой ошибки зависит от одной из следующих возможных причин:

Пользователь opmnctl или webcachectl не соответствует настроенному пользователю идентификатора процесса на странице «Безопасность» (Домашняя страница веб-кэша > вкладка «Администрирование» > «Свойства» > «Приложение» > «Исходные серверы») консоли управления Application Server или на странице «Идентификация процесса» (Свойства > Процесс Identity ) OracleAS Web Cache Manager.

Если намерение состоит в том, чтобы использовать идентификатор группы, отличный от идентификатора группы OracleAS Web Cache, необходимо настроить webcached для запуска с правами root с помощью команды setidentity или setroot в файле webcache_setuser.sh .

Пользователь opmnctl или webcachectl работает под тем же идентификатором группы, что и OracleAS Web Cache, который отличается от указанного в сообщении журнала событий.

В этом случае необходимо изменить идентификатор группы на правильную группу на странице «Безопасность» (Домашняя страница веб-кэша > вкладка «Администрирование» > «Свойства» > «Приложение» > «Исходные серверы») консоли управления сервером приложений или на странице «Идентификация процесса» ( «Свойства > Process Identity ) OracleAS Web Cache Manager. Чтобы определить правильную группу, войдите в систему с помощью пользователя opmnctl или webcachectl, а затем используйте идентификатор команды UNIX, чтобы определить правильный идентификатор группы.

Пользователь opmnctl или webcachectl работает под тем же идентификатором группы, что и OracleAS Web Cache, который совпадает с указанным в журнале событий.

Чтобы устранить эту ошибку, остановите все процессы Oracle Application Server и проверьте идентификатор группы. Используйте идентификатор команды UNIX, чтобы определить идентификатор пользователя и группы. Если идентификатор группы совпадает с идентификатором группы в сообщении журнала событий, вы можете снова запустить процессы.

Проблемы с загрузкой на компьютер OracleAS Web Cache

В операционных системах UNIX утилиты top и uptime сообщают о более высокой, чем ожидалось, средней нагрузке, когда компьютер OracleAS Web Cache не используется. Этот эффект возникает из-за того, что OracleAS Web Cache выполняет легкую работу по обслуживанию, даже когда он не используется. Одной из операций, которую выполняет OracleAS Web Cache, является сборка мусора — удаление менее популярных и менее допустимых объектов из кэша в пользу более популярных и более допустимых объектов. В режиме ожидания происходит следующий эффект:

Нагрузка во время безотказной работы — средняя длина очереди планировщика ядра — будет больше.OracleAS Web Cache увеличивает среднюю длину очереди (время безотказной работы) примерно на единицу.

Загрузка ЦП по-прежнему низкая, поскольку работа, выполняемая OracleAS Web Cache, минимальна.

Снижение производительности и память

Проблема 1. Пейджинг

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

Чтобы настроить OracleAS Web Cache для эффективной работы на компьютере с подкачкой, либо разверните OracleAS Web Cache на выделенном компьютере, либо уменьшите максимальный размер кэша и максимальный размер объекта в кэше на странице «Ограничения ресурсов и тайм-ауты» консоли управления Application Server ( Домашняя страница веб-кэша > вкладка «Администрирование» > «Свойства» > «Веб-кэш» > «Ограничения ресурсов и время ожидания») или страница «Ограничения ресурсов» OracleAS Web Cache Manager (Свойства > Ограничения ресурсов).

Проблема 2: веб-кэш OracleAS использует память, превышающую максимальный размер кэша

Если OracleAS Web Cache использует больше памяти, чем максимальный размер кэша, это увеличение может быть вызвано многочисленными одновременными запросами объектов, размер которых превышает максимальный размер кэшируемого объекта. В этой ситуации, поскольку объекты не кэшируются, OracleAS Web Cache использует больше памяти для обработки запросов и пересылки их на исходный сервер, чем для кэширования объектов.

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

Чтобы изменить максимальный размер кэша или максимальный размер объекта в кэше, установите новые ограничения на странице «Ограничения ресурсов и тайм-ауты» консоли управления Application Server (Домашняя страница веб-кэша > вкладка «Администрирование» > «Свойства» > «Веб-кэш» > «Ограничения ресурсов и тайм-ауты»). или на странице "Ограничения ресурсов" OracleAS Web Cache Manager ( Свойства > Ограничения ресурсов ).

Тайм-ауты недействительности

Функция аннулирования имеет тайм-аут по умолчанию, равный 300 секундам, для распространения запросов на аннулирование в иерархии кеша или развертываниях кластера кеша.

Проблема 1. Тайм-ауты инвалидации в иерархии кэша

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

Чтобы устранить эту ошибку:

В центральном кэше или кэше поставщика откройте файл webcache.xml с помощью текстового редактора.

Найдите элемент CALYPSONETINFO:

Увеличьте значение атрибута INV_GLOBAL_TIMEOUT.

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

Перезапустите OracleAS Web Cache с помощью следующей команды:

Проблема 2: тайм-ауты инвалидации в кластере кэша

При превышении времени ожидания в кластере кеша в ответе на запрос аннулирования отображается сообщение, подобное следующему:

Чтобы устранить эту ошибку:

На элементах кластера кеша используйте текстовый редактор, чтобы открыть файл webcache.xml.

Найдите элемент CALYPSONETINFO:

Измените значение атрибута INV_PEER_TIMEOUT.

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

Перезапустите OracleAS Web Cache с помощью следующей команды:

Распространить изменения на все элементы кластера кеша и перезапустить остальные элементы кластера кеша.

Проблемы с емкостью исходного сервера

Если веб-сервер приложений исчерпан, при доступе к страницам веб-сайта появляется следующее сообщение об ошибке:

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

Чтобы решить эту проблему, вы можете:

На странице Исходные серверы консоли управления сервером приложений (Домашняя страница веб-кэша > вкладка Администрирование > Свойства > Приложение > Исходные серверы) или OracleAS Web Cache Manager (Исходные серверы, сайты и балансировка нагрузки > Исходные серверы) установите флажок значение поля Вместимость. В этом поле указана текущая сконфигурированная емкость. Если емкость можно отрегулировать, увеличьте ее.

Оцените правила кэширования, чтобы определить, можно ли кэшировать дополнительный контент.

Браузеры не получают полных ответов

Браузер не получает полный ответ.

Если фактическая длина страницы меньше значения поля заголовка ответа Content-Length, установленного исходным сервером и отправленного браузеру OracleAS Web Cache, браузер ожидает поступления дополнительных данных, и соединение в конечном итоге будет прервано. тайм-аут. Если фактическая длина страницы больше Content-Length, браузер не получит всю страницу.Эта проблема не возникает для попаданий в кэш, поскольку OracleAS Web Cache сама правильно вычисляет длину содержимого для страниц, хранящихся в кэше.

Что касается промахов кеша, существует два обходных пути для решения проблемы неправильной длины содержимого:

Исправьте свое приложение, чтобы убедиться, что значение поля заголовка ответа Content-Length правильное.

Браузер отображает ошибку «Страница не отображается»

Браузеры возвращают сообщение об ошибке, говорящее о невозможности отображения страницы.

У Microsoft Internet Explorer были известные проблемы с попыткой повторного использования SSL-подключений после истечения времени ожидания. Из-за этого ограничения пользователи, подключающиеся к веб-сайту с помощью Internet Explorer 5.5 или более поздней версии со следующими условиями конфигурации веб-кэша OracleAS, могут получить сообщение об ошибке, говорящее о том, что страница не может быть отображена:

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

"Задача 4. Настройка тайм-аутов сети" для получения дополнительной информации о настройке тайм-аута проверки активности

после того, как OracleAS Web Cache уже пытался закрыть соединение. Затем браузер возвращает ошибку о том, что страница не может быть отображена.

Чтобы решить эту проблему, вы можете обновить все клиенты, чтобы использовать правильные исправления Microsoft. Информацию о проблеме с Internet Explorer, способах ее решения и ссылках на обновления для Internet Explorer см. в следующем:

Используйте текстовый редактор, чтобы открыть файл webcache.xml.

Найдите элемент CALYPSONETINFO:

Измените значение атрибута KEEPALIVE4MSIE_SSL на YES .

Перезапустите OracleAS Web Cache с помощью следующей команды:

Проблемы мониторинга производительности конечных пользователей

В этом разделе описываются обходные пути для мониторинга производительности конечных пользователей:

Проблема 1: файлы cookie и JavaScript на страницах, отслеживаемых системой мониторинга производительности конечных пользователей

Если такое поведение вызывает проблему для приложения, отключите эту функцию на странице мониторинга производительности конечного пользователя в консоли управления сервером приложений (Домашняя страница веб-кэша > вкладка «Администрирование» > «Свойства» > «Веб-кэш» > «Мониторинг производительности конечного пользователя»). или OracleAS Web Cache Manager ( Ведение журнала и диагностика > Мониторинг производительности конечных пользователей ).

Проблема 2: недостаточно данных в журналах доступа для мониторинга производительности конечных пользователей

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

Чтобы устранить эту ошибку:

Убедитесь, что формат мониторинга производительности конечного пользователя настроен как формат ведения журнала для сайта.

Кэширование – это процесс временного хранения данных в области хранения, называемой кешем, для использования в будущем. Кэширование данных значительно повышает производительность, поскольку оно:

  • Позволяет быстрее извлекать данные.
  • Сокращает время обработки, избегая повторной регенерации данных
  • Предотвращает попадание запросов API на внутренние серверы и тем самым снижает нагрузку на внутренние серверы.
  • Позволяет лучше использовать ресурсы системы/приложения.
  • Улучшает время отклика API

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

Apigee Edge предоставляет возможность сохранять данные в кэше во время выполнения для сохранения и более быстрого поиска. Функция кэширования доступна с помощью политики PopulateCache, политики LookupCache, политики InvalidateCache и политики ResponseCache.

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

Политика кэширования ответов:

  • Уменьшает количество запросов, поступающих к серверной части.
  • Уменьшает пропускную способность сети.
  • Повышает производительность API и время отклика

Антипаттерн

Вот пример политики кэширования ответов с конфигурацией по умолчанию:

Политика кэширования ответов кэширует ответы об ошибках в конфигурации по умолчанию. Однако не рекомендуется кэшировать ответы об ошибках, не задумываясь о неблагоприятных последствиях, потому что:

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

ИЛИ

Давайте объясним это, рассмотрев эти два сценария более подробно.

Сценарий 1: временный сбой серверной части/ресурса

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

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

Сценарий 2. Затянувшийся или исправленный сбой серверной части/ресурса

    Определенный серверный ресурс будет недоступен в течение 1 часа.

ИЛИ

С помощью этой информации мы можем правильно установить время истечения срока действия кэша в политике кэширования ответов, чтобы не кэшировать ответы об ошибках в течение более длительного времени. Однако, как только внутренний сервер/ресурс снова станет доступен, нам придется изменить политику, чтобы избежать кэширования ответов об ошибках. Это связано с тем, что в случае временного/однократного сбоя внутреннего сервера мы будем кэшировать ответ, и в итоге возникнет проблема, описанная в сценарии 1 выше.

Влияние

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

Рекомендации

  • Не сохраняйте ответы об ошибках в кэше ответов. Убедитесь, что в политике ResponseCache для этого элемента задано значение true, чтобы предотвратить кэширование ответов об ошибках, как показано в приведенном ниже фрагменте кода. В этой конфигурации будут кэшироваться только ответы для кодов успеха по умолчанию от 200 до 205 (если коды успеха не изменены).
  • Если вам необходимо кэшировать ответы об ошибках по какой-либо конкретной причине, вы можете определить максимальную/точную продолжительность времени, в течение которого будет наблюдаться сбой (если возможно):
    • Установите время истечения срока действия соответствующим образом, чтобы гарантировать, что вы не кэшируете ответы об ошибках дольше, чем время, в течение которого может быть обнаружен сбой.
    • Используйте политику ResponseCache для кэширования ответов об ошибках без элемента.

    Делайте это только в том случае, если вы абсолютно уверены, что отказ внутреннего сервера не является кратковременным/временным.

    После устранения сбоя удалите/отключите политику ResponseCache. В противном случае ответы об ошибках для временных сбоев внутреннего сервера могут быть закешированы.

    Если не указано иное, содержимое этой страницы предоставляется по лицензии Creative Commons Attribution 4.0, а образцы кода — по лицензии Apache 2.0. Подробнее см. в Правилах сайта Google Developers. Java является зарегистрированным товарным знаком Oracle и/или ее дочерних компаний.

    Есть несколько распространенных проблем в мире ИТ, с которыми вы сталкиваетесь снова и снова до такой степени, что многие пользователи хорошо с ними знакомы. Некоторые из них интуитивно понятны, например, блокировка паролем или неудачное обновление, когда вы сталкиваетесь с проблемой, ваши ИТ-специалисты сообщают вам, что это было, и это в значительной степени имеет смысл. А тут ошибки кеширования…

    Что такое кэш и почему мой компьютер их использует?

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

    Еще один способ работы кеша – хранить уже обработанные данные, чтобы вам не приходилось обрабатывать их заново каждый раз, когда они вам нужны. Это все равно, что хранить копию заполненных налогов. Если у вас есть все ваши w2, квитанции и т. д., вы МОЖЕТЕ пересчитать налоги из исходных данных, если вам когда-либо по какой-либо причине пришлось предоставить их копию, но гораздо удобнее просто держаться за этот готовый документ. Это другой вид кеша.

    Как возникают ошибки кэширования?

    Пока кеширование звучит как некая организационная задача, и в основном так и есть, но почему они вызывают проблемы? Это сводится к тому, что вещи меняются так, как вы этого не ожидаете. Если вы думаете о первом сценарии, представьте, что вы начали брать множество документов отовсюду и помещать их в свой кэш.Это в конечном итоге заставило бы ваш кеш просматривать столько же времени, как если бы все было отсортировано нормально; Таким образом, то, что предназначено для того, чтобы ускорить вас, может на самом деле замедлить вас. Таким образом, иногда программа может начать потреблять большие объемы памяти и сильно замедляться после продолжительного использования, потому что она продолжает цепляться за все больше и больше.

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

    Настроили ли вы пользовательские страницы ошибок.

    Независимо от того, настроили ли вы, как долго CloudFront будет кэшировать ответы об ошибках из вашего источника (минимальный TTL для кэширования ошибок).

    Код состояния.

    Для кодов состояния 5xx указывает, находится ли запрошенный объект в настоящее время в пограничном кэше CloudFront.

    Для некоторых кодов состояния 4xx, возвращает ли источник заголовок Cache-Control max-age или Cache-Control s-maxage.

    CloudFront всегда кэширует ответы на запросы GET и HEAD. Вы также можете настроить CloudFront для кэширования ответов на запросы OPTIONS. CloudFront не кэширует ответы на запросы, использующие другие методы.

    Для получения дополнительной информации о функциях и параметрах, связанных с сообщением об ошибке, возвращаемым из CloudFront, см. следующее:

    Информацию о настройках пользовательских страниц ошибок в консоли CloudFront см. в разделе Пользовательские страницы ошибок и кэширование ошибок.

    Сведения о минимальном сроке жизни при кэшировании ошибок в консоли CloudFront см. в разделе Минимальный срок жизни при кэшировании ошибок (в секундах).

    Как CloudFront обрабатывает ошибки, если вы настроили пользовательские страницы ошибок

    Если вы настроили пользовательские страницы ошибок, поведение CloudFront зависит от того, находится ли запрошенный объект в пограничном кэше.

    Запрошенный объект отсутствует в пограничном кеше

    CloudFront продолжает попытки получить запрошенный объект из вашего источника, если выполняются все следующие условия:

    Зритель запрашивает объект.

    Объект отсутствует в пограничном кеше.

    CloudFront делает следующее:

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

    CloudFront находит первое поведение кэша в вашей раздаче, шаблон пути которого совпадает с путем пользовательской страницы ошибок.

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

    Источник возвращает пользовательскую страницу ошибки в периферийное местоположение.

    CloudFront возвращает настраиваемую страницу ошибки зрителю, сделавшему запрос, а также кэширует настраиваемую страницу ошибки для следующих максимумов:

    Количество времени, определяемое минимальным TTL кэширования ошибок (по умолчанию 10 секунд)

    Количество времени, указанное в заголовке max-age Cache-Control или заголовке s-maxage Cache-Control, которое возвращается источником, когда первый запрос вызвал ошибку

    По истечении времени кэширования (определенного на шаге 5) CloudFront снова пытается получить запрошенный объект, перенаправляя другой запрос в ваш источник. CloudFront продолжает повторять попытки с интервалами, указанными в минимальном сроке жизни кэширования ошибок.

    Запрошенный объект находится в пограничном кеше

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

    Зритель запрашивает объект.

    Объект находится в пограничном кеше, но срок его действия истек.

    CloudFront делает следующее:

    Если ваш источник возвращает код состояния 5xx, CloudFront обслуживает объект, даже если срок его действия истек. В течение минимального TTL кэширования ошибок CloudFront продолжает отвечать на запросы зрителей, обслуживая объект из пограничного кэша.

    Если ваш источник возвращает код состояния 4xx, CloudFront возвращает код состояния, а не запрошенный объект, средству просмотра.

    По истечении минимального TTL кэширования ошибок CloudFront снова пытается получить запрошенный объект, перенаправляя другой запрос в ваш источник. Обратите внимание: если объект не запрашивается часто, CloudFront может удалить его из пограничного кэша, пока ваш исходный сервер все еще возвращает ответы 5xx. Сведения о том, как долго объекты остаются в пограничных кэшах CloudFront, см. в разделе Управление сроком хранения содержимого в кэше (срок действия).

    Как CloudFront обрабатывает ошибки, если вы не настроили пользовательские страницы ошибок

    Если вы не настроили пользовательские страницы ошибок, поведение CloudFront зависит от того, находится ли запрошенный объект в пограничном кэше.

    Запрошенный объект отсутствует в пограничном кеше

    CloudFront продолжает попытки получить запрошенный объект из вашего источника, если выполняются все следующие условия:

    Зритель запрашивает объект.

    Объект отсутствует в пограничном кеше.

    CloudFront делает следующее:

    CloudFront возвращает код состояния 4xx или 5xx зрителю, а также кэширует код состояния в пограничном кэше, получившем запрос, максимум из следующего:

    Количество времени, определяемое минимальным TTL кэширования ошибок (по умолчанию 10 секунд)

    Количество времени, указанное в заголовке max-age Cache-Control или заголовке s-maxage Cache-Control, которое возвращается источником, когда первый запрос вызвал ошибку

    В течение времени кэширования (определенного на шаге 1) CloudFront отвечает на последующие запросы зрителей для того же объекта с кэшированным кодом состояния 4xx или 5xx.

    По истечении времени кэширования (определенного на шаге 1) CloudFront снова пытается получить запрошенный объект, перенаправляя другой запрос в ваш источник. CloudFront продолжает повторять попытки с интервалами, указанными в минимальном сроке жизни кэширования ошибок.

    Запрошенный объект находится в пограничном кеше

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

    Зритель запрашивает объект.

    Объект находится в пограничном кеше, но срок его действия истек.

    CloudFront делает следующее:

    Если ваш источник возвращает код ошибки 5xx, CloudFront обслуживает объект, даже если срок его действия истек. В течение минимального TTL кэширования ошибок (по умолчанию 10 секунд) CloudFront продолжает отвечать на запросы зрителей, обслуживая объект из пограничного кэша.

    Если ваш источник возвращает код состояния 4xx, CloudFront возвращает код состояния, а не запрошенный объект, средству просмотра.

    По истечении минимального TTL кэширования ошибок CloudFront снова пытается получить запрошенный объект, перенаправляя другой запрос в ваш источник. Обратите внимание: если объект не запрашивается часто, CloudFront может удалить его из пограничного кэша, пока ваш исходный сервер все еще возвращает ответы 5xx. Сведения о том, как долго объекты остаются в пограничных кэшах CloudFront, см. в разделе Управление сроком хранения содержимого в кэше (срок действия).

    В некоторых сценариях клиентские операции в NCache могут завершаться сбоем из-за различных ошибок. Ниже приведены причины сбоев и их обработка в NCache.

    Указанный ключ существует в кэше

      Тип исключения: OperationFailedException

    Сообщение: "Указанный ключ уже существует в кеше".

    Причина: это исключение относится к Add API, если для объекта должен использоваться один и тот же ключ. операция, отличающаяся тем, что она добавляет элемент в кеш только в том случае, если ключ еще не существует. Добавить используется для добавления данных в кеш в первый раз, когда ключ не существует в кеше.

    Вы можете справиться с этим следующими способами в соответствии с вашими бизнес-требованиями:

    • Укажите новый ключ для добавляемого объекта.
    • Используйте Insert API, если с объектом будет использоваться один и тот же ключ. API, если с объектом будет использоваться один и тот же ключ. Сначала удалите объект, а затем снова добавьте его в кеш с тем же ключом.

    Ошибка подключения

      Тип исключения: OperationFailedException

    Сообщение: "Операция была прервана из-за потери связи между сервером и клиентом".

    Причина: Операции могут завершиться ошибкой в ​​случае потери соединения между сервером и клиентом. Это могло произойти из-за сбоя сети или физического прерывания связи между клиентом и сервером.

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

    В таком случае рекомендуется сначала устранить сетевую причину, а затем повторить операцию, если она крайне необходима.

    Тайм-аут операции

      Тип исключения: OperationFailedException

    Сообщение: "Время ожидания операции истекло".

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

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

    В NCache значение времени ожидания по умолчанию составляет 60 секунд. Если вы хотите, чтобы операция ждала дольше, вы можете изменить значение времени ожидания операции в соответствии с потребностями вашего бизнеса. Это можно сделать следующим образом:

    Веб-менеджер NCache

    На левой панели навигации нажмите Кластерные кэши или Локальные кэши в зависимости от того, какой кэш нужно настроить.

    Напротив имени кеша нажмите "Просмотреть подробности".

    При этом открывается страница подробной конфигурации кэша. Перейдите на вкладку «Дополнительные настройки» и нажмите «Настройки кластера» на левой панели.

    Изменить время ожидания операции.

    Нажмите «Сохранить изменения», чтобы применить эту конфигурацию к кешу.

    Редактирование конфигурации вручную

    Откройте файл config.ncconf, расположенный в папке %NCHOME%/config (Windows) или opt\ncache\config (Linux).

    В config.ncconf КАЖДОГО сервера вашего кластера укажите в теге ключ тайм-аута операции:

    Операция, выполняемая во время передачи состояния

      Тип исключения: OperationFailedException

    Сообщение: "Операция не может быть завершена из-за передачи состояния".

    Причина: как только состояние распределения кластера изменяется, требуется немедленная согласованность данных в кластере, особенно для топологий Partitioned и Partitioned-Replica. Это изменение состояния вызвано тем, что узлы присоединяются к кластеру или покидают его. Это означает, что как только узел присоединяется к кластеру, вновь добавленному узлу необходимо предоставить данные кэша в соответствии с распределением. Точно так же, если узел покидает кластер, данные перераспределяются между оставшимися узлами.

    Чтобы решить эту проблему, NCache внутренне инициирует передачу состояния — механизм передачи данных на уровне узла, который запускается после изменения распределения данных в кластеризованном кеше.

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

    Рекомендуется отслеживать счетчики State Transfer PerfMon для кэша после внесения изменений в кластер. Как только счетчики покажут, что передача состояния завершена, вы можете приступить к выполнению операций с кешем.

    Читайте также: