Caché
  • 26 Apr 2022
  • 28 Minutos para leer

Caché


Article Summary

Un caché es una recopilación de datos procesados que se mantiene a mano y se reutiliza para evitar costosas consultas repetidas en la base de datos. Totara 2.4 vio la implementación de MUC, el Moodle Universal Cache. Este nuevo sistema permite que ciertas funciones de Totara (p. ej., recuperación de cadena) aprovechen diferentes servicios de caché instalados (p. ej., archivos, ram, Memcached).

En futuras versiones de Totara, continuaremos ampliando la cantidad de funciones de Totara que utilizan MUC, que continuarán mejorando el rendimiento, pero ya puede comenzar a usarla para mejorar su sitio.

También es posible que desee consultar nuestra documentación de Caching para desarrolladores para obtener asesoramiento sobre cómo optimizar el rendimiento con el almacenamiento en caché. 

Un enfoque general para las pruebas de desempeño

Esta es la estrategia general que debe tomar:

  1. Cree un entorno de prueba que esté lo más cerca posible de su instancia de producción real (p. ej., hardware, software, redes, etc.).
  2. Asegúrese de eliminar tantas variables no controladas como pueda de este entorno (p. ej., otros servicios).
  3. Utilice una herramienta para colocar una carga realista, pero simulada y repetible en su servidor (p. ej., jmeter o selenio).
  4. Decida una forma de medir el rendimiento del servidor capturando datos (ram, carga, tiempo tomado, etc.).
  5. Ejecute su carga y mida un resultado de desempeño de referencia.
  6. Cambie una variable a la vez y vuelva a ejecutar la carga para ver si el rendimiento mejora o empeora. Repita según sea necesario.
  7. Cuando descubra configuraciones que resulten en una mejora consistente del desempeño, aplíquelas en su sitio de producción.

Configuración de caché en Totara

Desde Totara 2.4, Totara ha proporcionado un marco de plugin de caché para brindar a los administradores la capacidad de controlar dónde Totara almacena los datos en caché. Para la mayoría de los sitios de Totara, la configuración predeterminada debe ser suficiente y no es necesario cambiar la configuración. Para sitios Totara más grandes con múltiples servidores, es posible que los administradores deseen usar Memcached, MongoDB u otros sistemas para almacenar datos de caché. La pantalla del complemento de caché proporciona a los administradores la capacidad de configurar qué datos de caché se almacenan en el lugar.

El almacenamiento en caché en Totara está controlado por lo que se conoce como el caché universal de Moodle, comúnmente conocido como MUC.

Este documento explica brevemente qué es MUC antes de proceder a detallar los conceptos y las opciones de configuración que ofrece.

Los conceptos básicos de caché en Totara

El almacenamiento en caché en Totara no es tan complejo como aparece por primera vez. Un poco de conocimiento de fondo ayudará mucho a comprender cómo funciona la configuración de caché.

Tipos de caché

Existen tres tipos básicos (a veces denominados modos) de cachés en Totara. Estos son:

Tipo de caché

Descripción

Caché de la aplicación

La caché de la aplicación es, por mucho, el tipo de caché más utilizado en el código. Todos los usuarios comparten su información y sus datos persisten entre solicitudes. La información almacenada aquí generalmente se almacena en caché por una de dos razones:

  • Se requiere información para la mayoría de las solicitudes y nos guarda una o más interacciones de la base de datos
  • Es información a la que se accede con menos frecuencia, pero que requiere muchos recursos para generar

De manera predeterminada, esta información se almacena en una estructura organizada dentro de su directorio de datos de Totara.

Caché de sesión

La caché de sesión es igual a la sesión de PHP con la que ya estará familiarizado, de hecho, utiliza la sesión de PHP de forma predeterminada. Quizás se pregunte por qué tenemos este tipo de caché, pero la respuesta es simple. MUC proporciona un medio gestionado para almacenar y eliminar la información que se requiere entre solicitudes. Ofrece a los desarrolladores un marco de trabajo para usar en lugar de tener que reinventar la rueda y garantiza que tengamos acceso a un medio controlado para administrar la memoria caché según sea necesario.

Es importante tener en cuenta que este no es un tipo de caché de uso frecuente, ya que los datos de caché de sesión predeterminados se almacenan en la sesión de PHP y la sesión de PHP se almacena en la base de datos. Los usos del tipo de caché de sesión se limitan a conjuntos de datos pequeños, ya que no queremos distender las sesiones y, por lo tanto, ejercer presión en la base de datos.

Solicitar caché

Los datos almacenados en el tipo de caché de solicitud solo persisten durante la vida útil de la solicitud. Si es un desarrollador de PHP, piense en esto como una variable estática administrada. Este es, por mucho, el menos utilizado de los tipos de caché, los usos a menudo se limitan a información a la que se accederá varias veces dentro de la misma solicitud, generalmente por más de un área de código. La información en caché se almacena en la memoria de manera predeterminada.

Tipos de caché y sistemas de múltiples servidores

Si tiene un sistema con varios servidores web front-end, la caché de la aplicación debe compartirse entre los servidores. En otras palabras, no puede usar el almacenamiento local rápido para la memoria caché de la aplicación, pero debe usar almacenamiento compartido o alguna otra forma de memoria caché compartida, como un Memcache compartido.

Lo mismo se aplica a la memoria caché de sesión a menos que utilice un mecanismo de sesiones adhesivas para garantizar que dentro de una sesión, los usuarios siempre accedan al mismo servidor front-end.

Extremos traseros de caché

Los backends de caché son donde se almacenan los datos. Estos incluyen cosas como el sistema de archivos, la sesión de PHP, Memcached y la memoria.

De manera predeterminada, solo se utilizan el sistema de archivos, la sesión PHP y la memoria dentro de Totara.

No es necesario que un sitio tenga acceso a otros sistemas como Memcached. En cambio, eso es algo que usted es responsable de instalar y configurar. 

Cuando se mencionan los back-ends de caché, piense en sistemas fuera de Totara que pueden utilizarse para almacenar datos, como el servidor MongoDB, el servidor Memcache y aplicaciones de servidor similares.

Almacenes de caché

Las tiendas de caché son un tipo de complemento dentro de Totara. Facilitan la conexión de Totara con los back-ends de caché analizados anteriormente.

Totara envía con los tres incumplimientos mencionados anteriormente, así como Memcache, Memcached y MongoDB.

El código de estos se encuentra dentro de la caché/tiendas en la raíz de directorio de Totara.

Dentro de Totara, puede configurar tantas tiendas de caché como su arquitectura lo requiera. Si tiene varios servidores de Memcache, por ejemplo, puede crear una instancia de almacenamiento en caché para cada uno.

Totara de forma predeterminada contiene tres instancias de almacenamiento en caché que se utilizan cuando no ha realizado ninguna otra configuración.

  • Se crea una instancia de almacenamiento de archivos que se utiliza para todas las cachés de aplicaciones (los datos se almacenan en el directorio de datos de su sitio).
  • Se crea una instancia de almacenamiento de sesión que se utiliza para todas las cachés de sesión (los datos se almacenan en la sesión de PHP, que de manera predeterminada se almacena en su base de datos)
  • Se crea una instancia de almacenamiento de memoria estática que se utiliza para todos los tipos de caché de solicitud (los datos existen en la memoria solo durante la vida útil de una solicitud)

Cómo funcionan las cachés en el código

Los cachés se crean en código y son utilizados por el desarrollador para almacenar los datos que ve una necesidad de caché. 

El desarrollador no tiene ninguna opinión sobre dónde se almacenan los datos en caché. Deben especificar la siguiente información al crear una memoria caché para usar.

  • El tipo de caché que requieren
  • El área de código a la que pertenecerá esta memoria caché (la API, si lo hace)
  • El nombre de la memoria caché, algo que componen para describir en una palabra qué almacena la memoria caché

Existen varios requisitos y configuraciones opcionales que también pueden especificar. Sin embargo, es importante destacar que no pueden elegir qué backend de caché usar, solo pueden elegir el tipo de caché que desean de los tres detallados anteriormente.

Cómo se une

Esto se describe mejor en relación con los roles desempeñados en una organización.

  • El administrador del sistema instala los back-ends de caché que desea utilizar. Memcache, XCache, APC, etc. Totara no lo sabe, están fuera del alcance de Totara y son responsabilidad exclusiva del administrador del sistema.
  • El administrador del sitio de Totara crea una instancia de almacenamiento en caché en Totara para cada back-end que el sitio utilizará. Puede haber una o más instancias de almacenamiento en caché para cada back-end. Algunos backends como Memcached tienen configuraciones para crear espacios separados dentro de un back-end.
  • El desarrollador ha creado cachés en el código y las está usando para almacenar datos. No saben nada sobre cómo usarás tus cachés, solo crean un caché y le dicen a Totara qué tipo es mejor para él.
  • El administrador del sitio de Totara crea una asignación entre una instancia de almacenamiento en caché y una caché. Esa asignación le indica a Totara que utilice el back-end que especifique para almacenar los datos que el desarrollador desea almacenar en caché.

Además de eso, puede llevar las cosas aún más lejos.

  • Puede asignar muchas cachés a una sola instancia de almacenamiento en caché
  • Puede asignar varias instancias de almacenamiento en caché a una sola caché con prioridad (primaria ... final)
  • Puede asignar una instancia de almacenamiento en caché para que sea el almacenamiento predeterminado utilizado para todas las cachés de un tipo específico que de otro modo no tienen asignaciones específicas

Si esta es la primera vez que lee sobre la MUC, probablemente suene bastante complejo, pero no se preocupe, se analizará con más detalle mientras trabajamos en cómo configurar el almacenamiento en caché en Totara.

Conceptos avanzados

Estos conceptos son cosas que la mayoría de los sitios no necesitarán saber o por las que no se preocuparán.

Solo debe comenzar a buscar aquí si busca maximizar el rendimiento en sitios grandes que se ejecutan sobre servicios agrupados con back-ends de caché compartido, o en arquitectura multisitio nuevamente donde se comparte información entre sitios.

Bloqueando

La idea de bloquear no es nada nuevo, es el proceso de controlar el acceso para evitar problemas de concurrencia.

MUC tiene un segundo tipo de complemento, un complemento de bloqueo de caché que se utiliza cuando los cachés lo requieren. Hasta la fecha, no se han requerido cachés. Un caché por naturaleza es volátil y cualquier información que sea absolutamente crítica para la misión debe ser un almacenamiento de datos más permanente, probablemente la base de datos.

No obstante, existe un sistema de bloqueo que las definiciones de caché pueden requerir dentro de sus opciones y que se aplicará al interactuar con una instancia de almacenamiento en caché.

Compartiendo

Cada bit de datos que se almacena dentro de una memoria caché tiene una clave única calculada asociada.

De manera predeterminada, parte de esa clave es el identificador del sitio que hace que cualquier contenido almacenado en la memoria caché sea específico del sitio que lo almacenó. Para la mayoría de los sitios, esto es exactamente lo que desea.

Sin embargo, en algunas situaciones, es beneficioso permitir que varios sitios, o sitios vinculados de alguna manera, compartan datos en caché.

Por supuesto, no todos los cachés pueden compartirse; sin embargo, algunos ciertamente pueden hacerlo y, al compartirlos, puede reducir aún más la carga y aumentar el rendimiento al maximizar el uso de recursos.

Esta es una función avanzada; si elige configurar el uso compartido, hágalo con cuidado.

Para hacer uso del uso compartido, primero debe configurar instancias idénticas de almacenamiento en caché en los sitios en los que desea compartir información y, luego, en cada sitio, establecer el uso compartido para el caché en el mismo valor.

Las opciones de configuración disponibles son las siguientes:

  • Sitios con el mismo ID de sitio: este es el predeterminado, permite que los sitios con el mismo ID de sitio compartan información en caché. Es el más restrictivo, pero funcionará para todos los cachés. Todas las demás opciones conllevan un elemento de riesgo en el que debe asegurarse de que la información en la memoria caché se aplique a todos los sitios a los que accederá.
  • Sitios que ejecutan la misma versión: Todos los sitios que acceden al back-end que tienen la misma versión de Totara pueden compartir la información que esta memoria caché ha almacenado en el almacén de memoria caché.
  • Clave personalizada: Para esto, ingrese manualmente una clave para compartir. Luego, debe ingresar exactamente la misma clave en los otros sitios en los que desea compartir información.
  • Todos: Los datos almacenados en caché son accesibles para todos los demás sitios que acceden a los datos. Esta opción coloca la pelota completamente en la cancha del administrador de Totara.

Por ejemplo, si tenía varios sitios de Totara que ejecutaban la misma versión en un servidor con APC instalado, podría decidir asignar la caché de idioma a la tienda APC y configurar el uso compartido para todos los sitios que ejecutaban la misma versión.

La memoria caché de idioma para los sitios en la misma versión es segura para compartir en muchas situaciones, se utiliza prácticamente en todas las páginas y APC es extremadamente rápido. Estos tres puntos pueden dar como resultado un pequeño aumento del rendimiento para sus sitios.

Es importante considerar con la memoria caché de idioma que al compartirla entre los sitios también se compartirán las personalizaciones de idioma.

Ajustes de configuración de caché

La configuración de caché proporciona enlaces a todas las acciones que puede realizar para configurar el caché para los requisitos de su sitio.

Acceso a la pantalla de configuración de caché

Solo los usuarios con la capacidad site:config pueden acceder a la pantalla de configuración de caché. De manera predeterminada, solo son administradores.

Una vez que haya iniciado sesión, la pantalla de configuración se puede encontrar en el menú de acceso rápido > Configuración de > caché de > complementos.

Almacenes de caché instalados

Esto le muestra una lista de complementos de almacenamiento en caché que ha instalado.

Para cada complemento, puede ver rápidamente si está listo para ser utilizado (se han cumplido todos los requisitos de PHP), cuántas instancias de tienda ya existen en este sitio, los tipos de caché para los que se puede utilizar esta tienda, qué funciones admite (avanzado) y cualquier acción que pueda realizar en relación con esta tienda.

 La caché de sesión y la caché de solicitud estática no admiten tener varias instancias.

Aquí obtiene una lista de las instancias de almacenamiento en caché en este sitio.

Columna

Descripción

Nombre de la tienda

El nombre que se le da a esta instancia de almacenamiento en caché cuando se crea para que pueda reconocerla. Puede ser cualquier cosa que desee y solo se utiliza para que pueda identificar la instancia de la tienda.

Complemento

El complemento de almacenamiento en caché del que es una instancia.

Listo

Se muestra una marca de verificación cuando se han cumplido todos los requisitos de PHP, así como cuando se han verificado los requisitos de conexión o configuración.

Mapeos de la tienda

La cantidad de cachés a las que se ha asignado explícitamente esta instancia de tienda. No incluye ningún uso a través de asignaciones predeterminadas (se analiza a continuación).

Modos

Los modos a los que puede servir esta instancia de almacenamiento en caché.

Soportes

Las funciones son compatibles con esta instancia de almacenamiento en caché.

Bloqueo

El bloqueo es un mecanismo que restringe el acceso a datos en caché a un proceso a la vez para prevenir que los datos se sobrescriban. El método de bloqueo determina cómo se adquiere y comprueba el bloqueo.

Acciones

Cualquier acción que se pueda realizar contra esta instancia de almacenamiento en caché.

Definiciones de caché conocidas

La idea de una definición de caché aún no se ha analizado aquí. Es algo controlado por el desarrollador. Cuando crean una caché, pueden hacerlo de dos maneras, la primera es mediante la creación de una definición de caché.

Esto es esencialmente contarle a Totara sobre la memoria caché que han creado. La segunda forma es crear una caché Adhoc. Siempre se alienta a los desarrolladores a usar el primer método. El administrador solo puede asignar y configurar cachés con una definición. Los cachés ad hoc utilizarán solo la configuración predeterminada. 

Por lo general, los cachés Adhoc solo se permiten en situaciones en las que el caché es pequeño y configurarlo más allá de los valores predeterminados no proporcionaría ningún beneficio a los administradores.

Para cada caché que se muestra aquí, obtiene la siguiente información:

Columna

Descripción

Definición

Una descripción concisa de esta memoria caché.

Modo

El tipo de caché para el que está diseñado este caché.

Componente

El componente de código con el que está asociado el caché.

Área

El área de código que esta caché está sirviendo dentro del componente.

Mapeos de la tienda

La tienda o tiendas que se utilizarán para esta memoria caché.

Compartir

Cómo se configura el uso compartido para este sitio.

Acciones

Cualquier acción que se pueda realizar en la memoria caché. Por lo general, puede editar las asignaciones de instancias de almacenamiento en caché, editar el uso compartido y purgar la caché.

También encontrará en la parte inferior de esta tabla un enlace titulado Volver a escanear definiciones. Al hacer clic en este enlace, Totara se apagará y verificará todos los componentes centrales y los complementos instalados en busca de cambios en las definiciones de caché.

Esto sucede de manera predeterminada durante una actualización y si se encuentra una nueva definición de caché. Sin embargo, si se encuentra buscando una caché que no está allí, puede valer la pena intentarlo.

También es útil para los desarrolladores, ya que les permite aplicar cambios rápidamente cuando trabajan con cachés. Es útil cuando se modifican las definiciones de caché para encontrar lo que funciona mejor.

Resumen de instancias de bloqueo de caché

Como se mencionó anteriormente, el bloqueo de caché es un concepto avanzado en MUC.

La tabla aquí muestra la información sobre los mecanismos de bloqueo configurados disponibles para MUC. De manera predeterminada, solo hay un único mecanismo de bloqueo disponible, el bloqueo de archivos. En la actualidad, no hay cachés que hagan uso de esto. 

Cuando no hay mapeo presente

Esta tabla muestra rápidamente qué instancias de almacenamiento en caché se utilizarán para tipos de caché si no hay asignaciones específicas implementadas.

Para simplificar eso, esto muestra los almacenes de caché predeterminados para cada tipo.

En la parte inferior, notará que hay un enlace Editar asignaciones que lo lleva a una página donde puede configurar esto.

Caché de archivos

Al crear una caché de archivos, hay de hecho solo un parámetro requerido, el nombre de la tienda. El nombre de almacenamiento se utiliza para identificar la instancia de almacenamiento de archivos en la interfaz de configuración y debe ser único para el sitio. Puede ser cualquier cosa que desee, pero le aconsejaríamos que lo haga algo que describa su uso previsto del almacén de archivos.

Se pueden especificar las siguientes propiedades, personalizando dónde se ubicará la caché de archivos y cómo funciona.

Configuración

Descripción

Notas

Nombre de la tiendaSe dará el nombre de la tienda. Obligatorio.
BloqueoEl bloqueo es un mecanismo que restringe el acceso a datos en caché a un proceso a la vez para prevenir que los datos se sobrescriban. El método de bloqueo determina cómo se adquiere y comprueba el bloqueo.-

Ruta de caché

Le permite especificar un directorio para usar al almacenar datos de caché en el sistema de archivos. Por supuesto, el usuario que ejecuta el servidor web debe tener acceso de lectura/escritura a este directorio. De manera predeterminada (en blanco), se utilizará el directorio de datos del sitio.

-

Crear directorio automáticamente

Si está habilitado cuando se inicializa la memoria caché, si el directorio especificado no existe, Totara lo creará. Si esto se especifica y el directorio no existe, la memoria caché se considerará no lista y no se utilizará.

-

Almacenamiento de directorio único

De manera predeterminada, el almacén de archivos creará una estructura de subdirectorio para almacenar datos. Los primeros tres caracteres de la clave de datos se utilizarán como directorio. Esto es útil para evitar los límites del sistema de archivos si el sistema de archivos tiene un número máximo de archivos por directorio. Al habilitar esta opción, la caché de archivos no utilizará subdirectorios para el almacenamiento de datos. Esto conduce a una estructura plana pero a una que es más probable que alcance los límites del sistema de archivos. Usar con cuidado.

-

Directorio Prescan

Una de las funciones que proporciona la caché de archivos es escanear previamente el directorio de almacenamiento cuando se utiliza la caché por primera vez. Esto conduce a verificaciones más rápidas de archivos a expensas de una lectura en profundidad.

-

El almacenamiento en caché de archivos es el almacenamiento predeterminado que se utiliza para las cachés de aplicaciones y, de manera predeterminada, el directorio de datos del sitio se utiliza para la caché. El acceso a archivos puede ser un recurso gravable en tiempos de mayor carga y las siguientes son algunas ideas sobre la configuración de almacenes de archivos alternativos para mejorar el rendimiento.

  • Verifique si hay un sistema de archivos más rápido disponible para usar en su servidor. Quizás tenga una SSD instalada pero no la esté usando para su directorio de datos del sitio porque el espacio es una prima. Debe considerar crear un directorio o una pequeña partición en su SSD y crear un almacén de archivos para usarlo en lugar de su directorio de datos de Totara.
      
  • Si no tiene una unidad más rápida disponible para usar, tiene mucho espacio libre. Algo que puede valer la pena dar una foto sería crear una pequeña partición en la unidad que tiene instalada que utiliza un sistema de archivos orientado al rendimiento. Muchas instalaciones de Linux en estos días, por ejemplo, utilizan EXT4, un buen sistema de archivos, pero uno que tiene gastos generales debido a cosas como el diario.
      
  • Crear una partición y usar un sistema de archivos que se ha optimizado para el rendimiento puede darle ese pequeño impulso que está buscando. Recuerde que las memorias caché están diseñadas para ser volátiles y elegir un sistema de archivos para una memoria caché es una decisión diferente de elegir un sistema de archivos para su servidor.
      
  • Finalmente, si está listo para ir a longitudes y tiene una gran cantidad de memoria en su servidor, podría considerar crear un ramdisco/tmpfs y señalar un almacén de archivos a eso. Basándose puramente en la memoria, es volátil exactamente como lo es la caché, y el rendimiento del sistema de archivos no va a mejorar mucho más que esto.

Sea lo que sea que elija, recuerde probarlo repetidamente. Asegúrese de la decisión que tome.

Memcache

Antes de poder agregar una instancia de almacenamiento de Memcache, primero debe tener un servidor Memcached al que pueda acceder y tener la extensión PHP de Memcache instalada y habilitada en su servidor web.

Al igual que el almacén de archivos, debe proporcionar el nombre de la tienda. Se utiliza para identificar la instancia de almacenamiento en la interfaz de configuración y debe ser única para el sitio.

Para una tienda de Memcache, también debe ingresar el servidor de Memcache o los servidores que desea que utilice. Los servidores deben agregarse uno por línea y cada línea puede contener de una a tres propiedades separadas por dos puntos.

  • La dirección URL o IP del servidor (obligatorio).
  • El puerto en el que está escuchando el servidor (opcional).
  • El peso para dar este servidor (opcional).

Por ejemplo, si tuviera dos instancias de Memcached ejecutándose en su servidor, una configurada para el puerto predeterminado y una configurada para 11212, utilizaría lo siguiente:

127.0.0.1
127.0.0.1:11212

Opcionalmente, también puede especificar un prefijo clave para usar. Lo que ingrese aquí estará prefijado a todas las claves antes de acceder al servidor y puede utilizarse para particionar eficazmente el espacio de Memcache de una manera reconocible. Esto puede ser útil si tiene una herramienta de gestión para su servidor Memcached que utiliza para inspeccionar lo que se almacena allí.

Notas de implementación importantes

La extensión Memcache no proporciona un medio para eliminar un conjunto de entradas. Se elimina una sola entrada o se eliminan todas las entradas. Debido a esto, es importante tener en cuenta que cuando purga una tienda de Memcache dentro de Totara, elimina todas las entradas en el back-end de Memcache. No solo aquellos relacionados con Totara. Por ese motivo, se recomienda enfáticamente usar servidores dedicados de Memcached y no configurar ningún otro software para usar esos servidores. Hacerlo puede provocar depreciación del desempeño y efectos adversos.

Del mismo modo, si desea usar Memcache para almacenamiento en caché y para sesiones en Totara, es esencial usar dos servidores Memcached. Uno para sesiones y otro para almacenamiento en caché. De lo contrario, una purga de caché en Totara purgará sus sesiones.

Memcached

Al igual que la tienda Memcache, primero debe tener un servidor Memcached al que pueda acceder y tener la extensión PHP Memcached instalada y habilitada en su servidor.

Además, al igual que la tienda Memcache, hay dos parámetros requeridos para configurar una tienda Memcached, el nombre de la tienda y el servidor. También hay varios parámetros opcionales que puede configurar al crear una tienda Memcached.

Configuración

Descripción

Notas

Nombre de la tienda 

Se utiliza para identificar la instancia de almacenamiento en la interfaz de configuración y debe ser única para el sitio.

-

Servidores 

Los servidores que desea utilizar en este almacén de caché. Consulte a continuación para obtener más detalles.

Los servidores deben agregarse uno por línea y cada línea puede contener de una a tres propiedades separadas por dos puntos.

  • La dirección URL o IP del servidor (obligatorio)
  • El puerto en el que está escuchando el servidor (opcional)
  • El peso para dar a este servidor (opcional)

Por ejemplo, si tuviera dos instancias de Memcached ejecutándose en su servidor, una configurada para el puerto predeterminado y una configurada para 11212, utilizaría lo siguiente:

127.0.0.1
127.0.0.1:11212

Usar compresión

Predeterminado a verdadero, pero puede deshabilitarse si lo desea.

-

Usar serializador

Le permite seleccionar qué serializador se utiliza al comunicarse con el servidor Memcache. 

De manera predeterminada, la extensión Memcached y PHP solo proporcionan una serializada; sin embargo, hay un par de otras disponibles para la instalación si las busca. Uno, por ejemplo, es el igbinario que se encuentra en https://github.com/igbinary/igbinary.

Clave de prefijo

Le permite configurar algunos caracteres que estarán prefijados a todas las claves antes de interactuar con el servidor.

-

Método hash

El método hash proporcionado por la extensión Memcached se utiliza de forma predeterminada aquí. Sin embargo, puede elegir usar una alternativa si lo desea. 

Consulte el manual de PHP para obtener más información sobre las opciones disponibles. Si lo desea, también puede anular la función hash predeterminada que PHP utiliza dentro de su php.ini.

Escrituras en búfer

Deshabilitado de forma predeterminada. Activar las escrituras en búfer minimizará la interacción con el servidor Memcached al almacenar en búfer las operaciones de io. La desventaja de esto es que en un sistema con cualquier concurrencia existe una buena probabilidad de que múltiples solicitudes terminen generando los datos porque nadie los había empujado al servidor Memcached cuando lo solicitaron por primera vez. Habilitar esto puede ser ventajoso para cachés a los que solo se accede en áreas controladas por capacidad, por ejemplo, donde múltiples interacciones están afectando los recursos de red o tales. Pero eso definitivamente está en el extremo de ajuste de la escala.


Notas de implementación importantes

La extensión Memcached no proporciona un medio para eliminar un conjunto de entradas. Se elimina una sola entrada o se eliminan todas las entradas.

Debido a esto, es importante tener en cuenta que cuando purga una tienda Memcached dentro de Totara, elimina todas las entradas en el servidor Memcached. No solo aquellos relacionados con Totara.

Por ese motivo, se recomienda enfáticamente usar servidores dedicados de Memcached y no configurar ningún otro software para usar los mismos servidores. Hacerlo puede provocar depreciación del desempeño y efectos adversos.

Del mismo modo, si desea usar Memcached para almacenamiento en caché y para sesiones en Totara, es esencial usar dos servidores de Memcached. Uno para sesiones y otro para almacenamiento en caché. De lo contrario, una purga de caché en Totara purgará sus sesiones.

MongoDB

MongoDB es una base de datos NoSQL orientada a documentos de código abierto. Visite su sitio web www.mongodb.org para obtener más información.

Configuración

Descripción

Notas

Nombre de la tienda

Se utiliza para identificar la instancia de almacenamiento en la interfaz de configuración y debe ser única para el sitio.

-

Servidor

Esta es la cadena de conexión para el servidor que deseas utilizar. Varios servidores se pueden especificar mediante una lista separada por comas.

-

Base de datos

El nombre de la base de datos que se utilizará.

-

Nombre de usuario

El nombre de usuario que se utilizará al realizar una conexión.

-

Contraseña

La contraseña del usuario que se utiliza para la conexión.

-

Conjunto de réplicas

Nombre del conjunto de réplicas al que conectarse. Si se da esto, la instancia maestra se determinará mediante el comando de base de datos ismaster en las semillas, por lo que el driver puede llegar a conectarse a un servidor que no estaba siquiera en la lista.

-

Usar seguro

Si está habilitada, la opción de uso seguro se utilizará durante las operaciones de inserción, obtención y extracción. Si has especificado un conjunto de réplicas, esto se hará de todos modos.

-

Usar valor seguro

Puedes proporcionar un valor específico para el uso seguro. Esto determinará el número de servidores en que las operaciones tienen que completarse antes de que se consideren completadas.

-

Usar teclas extendidas

Si se activa esta opción, todos los tipos de teclas se usarán al trabajar con el plugin. Esto todavía no se usa internamente, pero permitirá buscar e investigar fácilmente el plugin MongoDB de forma manual si así lo deseas. Activar esto agregará una pequeña sobrecarga, por lo que solo debe hacerse si lo necesita.

-

Redis

Redis es un almacén de estructura de datos en memoria de código abierto que se puede utilizar para almacenamiento en caché o como base de datos. Puede obtener más información en el sitio web de Redis

Configuración
Descripción
Notas

Servidor

Esto establece el nombre de host o la dirección de IP del servidor Redis para usar.

-

Contraseña

Esto establece la contraseña del servidor Redis.

Si desea utilizar Redis como almacén de sesiones, debe establecer los valores correctos en el archivo de configuración ($CFG->session_redis_*). Puede encontrar más detalles en el archivo config-dist.php.

Prefijo clave

Este prefijo se utiliza para todos los nombres de clave en el servidor de Redis. Si solo tiene una instancia de Totara utilizando este servidor, puede dejar este valor predeterminado. 

Debido a las restricciones de longitud de la clave, se permite un máximo de cinco caracteres.

Usar serializador

Especifica el serializador que se utilizará para la serialización. Los serializadores válidos son el serializador PHP predeterminado o el serializador igbinario. Este último solo se admite cuando se ha configurado correctamente en el sistema (consulte más abajo en la sección Uso del serializador igbinario). 

-

Uso del serializador igbinario 

El serializador igbinario almacena estructuras de datos en forma binaria compacta y los ahorros pueden ser significativos para almacenar datos serializados.

El serializador igbinar no forma parte de una distribución PHP estándar, pero puede instalarse opcionalmente. Puede obtenerlo de GitHub o PECL.

Almacenamiento en caché de rediseño

Cuando se instala el igbinario, puede elegir el serializador al configurar el almacenamiento en caché de Redis. Se predetermina al serializador PHP estándar, pero se puede cambiar al igbinario.

Almacenamiento en caché estático

El almacén de caché estático utiliza automáticamente el serializador igbinario cuando está instalado. No hay ninguna opción de configuración para activarla o desactivarla.

Controlador de sesión de rediseño

Si el igbinario está instalado y $CFG->session_redis_serializer_use_igbinary está configurado como verdadero, el controlador de sesión de Redis utiliza el igbinario para serializar los datos.

Instancias de tienda únicas frente a múltiples

Si se asigna una sola instancia de almacenamiento a la memoria caché, ocurre lo siguiente:

  • Obtener datos de la memoria caché Totara le pide a la memoria caché que obtenga los datos. 
  • La caché intenta obtenerla de la tienda. 
  • Si la tienda lo tiene, se lo entrega a la memoria caché y la memoria caché se lo entrega a Totara para que pueda usar los datos. 
  • Si la tienda no lo tiene, se devuelve un error y Totara tendrá que generar los datos y lo más probable es que los envíe a la caché.
  • Al almacenar datos en la caché, Totara le pedirá a la caché que almacene algunos datos, y la caché se los entregará a la caché.

Si se asignan varias instancias de almacenamiento a la memoria caché, ocurre lo siguiente:

  • Obtener datos de una tienda Totara le pide al caché que obtenga los datos.
  • La caché intenta obtenerla de la primera tienda. 
  • Si la primera tienda lo tiene, devuelve los datos al caché y el caché lo devuelve a Totara. 
  • Si la primera tienda no tiene los datos, entonces intenta obtener los datos de la segunda tienda. 
  • Si la segunda tienda lo tiene, lo devuelve a la primera tienda que luego lo almacena antes de devolverlo a la memoria caché. 
  • Si no lo hace, se utiliza la siguiente tienda. 
  • Esto continúa hasta que se encuentren los datos o hasta que no haya más tiendas para verificar.
  • Al almacenar datos en la caché, Totara le pedirá a la caché que almacene algunos datos, la caché se los entregará a cada almacén de caché asignado para su almacenamiento.

La principal ventaja de asignar múltiples tiendas es que puede introducir redundancia de caché. Por supuesto, esto introduce una sobrecarga, por lo que solo debe utilizarse cuando sea realmente necesario. El siguiente es un ejemplo de cuándo mapear múltiples tiendas puede proporcionar una ventaja.

Escenario

Problema: tiene un servidor web que tiene un sitio de Totara, así como otros sitios. También tiene un servidor Memcache que es utilizado por varios sitios, incluido Totara. Memcache tiene una memoria caché de tamaño limitado que, cuando está llena y se le solicita que almacene más información, libera espacio al eliminar las entradas de memoria caché menos utilizadas. Desea usar Memcache para su sitio de Totara porque es rápido; sin embargo, sabe que puede introducir más fallas de caché porque es un servidor de Memcache muy utilizado.

Solución: Para solucionar esto, asigna dos tiendas a cachés que desea utilizar Memcache. Usted convierte a Memcache en el almacén principal y hace que el almacén de archivos predeterminado sea el almacén de caché final.

Explicación: Al hacer esto, has creado redundancia cuando se solicita algo que Totara primero intenta obtenerlo de Memcache (la tienda más rápida) y, si no está allí, procede a verificar la caché de archivos.

Solo un par de puntos de interés más:

  • Mapear múltiples cachés introducirá gastos generales, mientras más cachés mapeen, más gastos generales.
  • Considere las tiendas de caché a las que está asignando, si los datos permanecen allí una vez configurados, entonces no hay ningún punto de asignación de más tiendas después de ellas. Esta técnica es principalmente valiosa en situaciones en las que no se garantiza que los datos permanezcan después de ser establecidos.
  • Siempre pruebe su configuración. Habilite la visualización de la información de rendimiento y luego observe qué tiendas se utilizan al interactuar con Totara de manera tal que active la memoria caché.

© Copyright 2024 Totara Learning Solutions. All rights reserved. Some content originally obtained via GPLv3 license and continues to be available under GPLv3. All other content is the sole copyright of Totara Learning Solutions. 


¿Te ha sido útil este artículo?

Changing your password will log you out immediately. Use the new password to log back in.
First name must have atleast 2 characters. Numbers and special characters are not allowed.
Last name must have atleast 1 characters. Numbers and special characters are not allowed.
Enter a valid email
Enter a valid password
Your profile has been successfully updated.