Configuración adicional de la memoria caché de datos de HCL Commerce
Para refinar la configuración de la memoria caché de datos de HCL Commerce, añada un elemento <CrossTransactionCache>
o un elemento <LocalTransactionCache>
al elemento <InstanceProperties>
del archivo de configuración de HCL Commercewc-server.xml.
CrossTransactionCache
añadida para que se usen los valores predeterminados. Si ha modificado alguno de estos valores, revise el motivo por el que no utiliza los valores predeterminados y decida si desea conservar los valores personalizados o aceptar los predeterminados. Sin embargo, se recomienda utilizar los valores predeterminados.Elemento <CrossTransactionCache>
La memoria caché entre transacciones mantiene datos que persisten entre transacciones hasta que caducan con DynaCache.
El código siguiente muestra cómo se definen los elementos disponibles para la memoria caché entre transacciones. Se incluyen los valores posibles para un elemento, por ejemplo [seconds|172800]
. El valor de este elemento puede ser cualquier número positivo (en segundos). El valor predeterminado, que está en negrita, es 172800.
<CrossTransactionCache enabled="[true|false]" commandCaching="[on|off|default]" maxInactivityTime="[seconds|86400]" maxTimeToLive="[seconds|172800]" maxTimeToLiveForAutoCacheEntries="[seconds|0]" autoCacheableTableNames="string" notAutoCacheableTableNames="string" defaultResultSizeThreshold="[number|8]" clearUserOnLogoff="[true|false]" clearUserDataCacheOnLogoff="[true|false]"
maxInvalidationldsPerTransaction="[number|100000]" clearCacheOnMaxInvalidationIdsPerTransaction="[true|false]"
reduceMemory="[true|false]"
chunkSize="[number of rows|50]"
delayAfterInvalidationMilliseconds="[milliseconds|0]"
delayAfterInvalidationPercentBuffer="[percent|-1]"
delayAfterInvalidationTuneIntervalSeconds="[seconds|60]"
restCaching="[true|false]"
reduceInvalidationIds="[true|false]"
sizeable="[true|false]"
CacheName="[disabled|DistributedMapName|commandCaching]" avoidConcurrentCacheMiss="[true|false]">
<DistributedMapName enabled="[true|false]" maxInactivityTime="seconds" maxTimeToLive="seconds" maxTimeToLiveForAutoCacheEntries="[seconds|0]"
reduceMemory="[true|false]"
delayAfterInvalidationMilliseconds="[milliseconds|0]"
delayAfterInvalidationPercentBuffer="[percent|-1]"
delayAfterInvalidationTuneIntervalSeconds="[seconds|60]"
restCaching="[true|false]"
chunkSize="[number of rows|50]" avoidConcurrentCacheMiss="[true|false]">
/>
<CacheName enabled="[true|false]" maxInactivityTime="seconds" maxTimeToLive="seconds" maxTimeToLiveForAutoCacheEntries="[seconds|0]"
reduceMemory="[true|false]"
delayAfterInvalidationMilliseconds="[milliseconds|0]"
delayAfterInvalidationPercentBuffer="[percent|-1]"
delayAfterInvalidationTuneIntervalSeconds="[seconds|60]"
restCaching="[true|false]"
chunkSize="[number of rows|50]" avoidConcurrentCacheMiss="[true|false]">
/>
</CrossTransactionCache>
Nombre del elemento | Valores posibles (valores predeterminados en negrita) | Usage |
---|---|---|
habilitado | true|false | Especifique false para desactivar el almacenamiento en memoria caché entre transacciones |
commandCaching | on|off|valor predeterminado | Especifique on para obligar a la memoria caché entre transacciones a utilizar el almacenamiento en memoria caché de mandatos en baseCache DistributedMap predeterminado. Especifique off para impedir que la memoria caché entre transacciones utilice el almacenamiento en memoria caché de mandatos. El valor predeterminado utiliza el almacenamiento en memoria caché DistributedMap cuando se encuentra DistributedMap correspondiente utilizando su nombre JNDI y, de lo contrario, utiliza el almacenamiento en memoria caché de mandato en DistributedMap predeterminado. |
maxInactivityTime | seconds|86400 | Especifique el número de segundos tras el cual se elimina una entrada de la memoria caché inactiva de la memoria caché debido a la inactividad. Este valor no tiene efecto cuando se utiliza el almacenamiento en memoria caché de mandatos. En su lugar, utilice el código |
maxTimeToLive | seconds|172800|0 | Para evitar posibles problemas debidos a ligeros retardos en la propagación de mensajes de invalidación, el valor predeterminado de maxTimeToLive para las siguientes memorias caché lógicas es cero (esto, en la práctica, inhabilita el almacenamiento en memoria caché): Si se especifica un valor maxTimeToLive positivo, se anulará el valor predeterminado (esto, en la práctica, vuelve a habilitar el almacenamiento en memoria caché). Si decide hacerlo, considere también la posibilidad de especificar un valor para delayAfterInvalidationMilliseconds (se puede especificar un valor diferente para cada memoria caché lógica). El valor delayAfterInvalidationMilliseconds se puede utilizar para que el proceso de mensajes de invalidación tenga tiempo para completarse antes de que la ejecución continúe después de que los datos almacenados en memoria caché se modifiquen en la base de datos. Por ejemplo, puede empezar con un valor de 500 milisegundos y luego experimentar para encontrar un valor más óptimo. |
autoCacheableTableNames notAutoCacheableTableNames | string | Los valores autoCacheableTableNames y notAutoCacheableTableNames solo están definidos a nivel global y cada uno es una lista de nombres de tablas de base de datos delimitada por espacios en blanco, done los espacios, las líneas nuevas y los tabuladores se tratan como espacio en blanco. Si aparece un nombre de tabla en ambos valores, el valor notAutoCacheableTableNames tiene prioridad. De forma predeterminada, la memoria caché de datos presupone determinados nombres de tabla (tales como USERS y ORDERS) también descalifican una consulta para el almacenamiento en memoria caché automático, a menos que los nombres aparezcan en el valor autoCacheableTableNames. De forma predeterminada, estos valores de serie están vacíos. |
maxTimeToLiveForAutoCacheEntries | seconds|0 | Cuando se especifica un número positivo de segundos, determinados resultados de consulta JDBC que cumplen los requisitos se almacenan en la memoria caché utilizando las memorias caché lógicas siguientes:
Para optar a la memoria caché automática, una consulta JDBC debe hacer referencia a una o más nombres de tablas incluidos en el valor autoCacheableTableNames y no debe hacer referencia a ninguno de los nombres de tabla incluidos en el valor notAutoCacheableTableNames. Utilice IBM Extended Cache Monitor para ver las consultas que se están almacenando en memoria caché y sus ID de dependencia. De forma predeterminada, los resultados de la consulta almacenados automáticamente en la memoria caché se almacenan en la memoria caché de objeto con el nombre JNDI services/cache/WCMiscDistributedMapCache. Si bien el almacenamiento automático en la memoria caché puede mejorar el rendimiento, utilice esta característica con cuidado. Conozca qué consultas se almacenan en la memoria caché y asegúrese de que se utiliza una técnica aceptable de invalidación de memoria caché como, por ejemplo, una vida breve o desencadenantes de base de datos que añaden ID de invalidación de memoria caché no válidos a la tabla CACHEIVL en la columna DATAID. |
defaultResultSizeThreshold | number|8 | Cuando el tamaño de la colección de objetos que se almacenan en memoria caché en una entrada de memoria caché excede el valor umbral especificado, los ID de dependencia se generan utilizando nombres de tabla. Para reducir el número de ID de dependencia generados para la entrada de memoria caché, no se utilizan nombres de columna y valores. |
clearUserOnLogoff | true|false | Especifique false si DC_userid:nnnn los ID de invalidación no se deben enviar a baseCache cuando el usuario con el ID de usuarionnnn cierra la sesión. |
clearUserDataCacheOnLogoff | true|false | Especifique true si las entradas de memoria caché específicas de un determinado usuario se eliminan de la memoria caché cuando el usuario cierra la sesión. |
maxInvalidationldsPerTransaction | number|100000 | Especifique el número máximo de operaciones de invalidación de memoria caché entre transacciones que se pueden ejecutar en una sola transacción. El conocimiento de cada ejecución de operación de invalidación debe retenerse durante la transacción actual. Una transacción de larga ejecución que ejecuta demasiadas operaciones de invalidación puede quedarse sin memoria. Cuando se alcanza el límite especificado, no se recuerdan más ID de invalidación para la memoria caché entre transacciones para el resto de la transacción actual. Cuando finaliza la transacción:
|
clearCacheOnMaxInvalidationIdsPerTransaction | true|false | Especifica la acción cuando se ha superado el número máximo de operaciones de invalidación de memoria caché entre transacciones, especificado por el elemento maxInvalidationIdsPerTransaction. Especifique true para borrar toda la memoria caché de transacciones cuando finalice la transacción actual. Si este elemento se establece en false, las invalidaciones se emiten de forma inmediata y no se recuerdan hasta el final de la transacción actual. Este valor deja un corto margen de tiempo durante el cual los datos obsoletos pueden almacenarse en la memoria caché. |
reduceMemory | true|false | Especifique true para reducir la huella de memoria de la memoria caché de transacciones. |
chunkSize | number of rows|50 | Algunas consultas de base de datos puede devolver cientos o incluso miles de filas. Las filas devueltas se dividen en varias entradas de memoria caché para mantener la ocupación de memoria caché y para ayudar a evitar problemas que están relacionados con la falta de memoria. Este parámetro especifica el número de filas que se almacenan en cada entrada de memoria caché. |
delayAfterInvalidationMilliseconds | milliseconds|0 | Este parámetro permite que se añada un pequeño retraso antes de que se envíe una respuesta al navegador cliente para cualquier transacción que implique una invalidación. Este retraso puede ayudar a evitar que el cliente realice una solicitud posterior antes de que se procese completamente la invalidación en el servidor.
|
![]() | percent|-1 | Este parámetro define un porcentaje de tiempo de almacenamiento intermedio, el valor pc, que se añade dentro de un valor de retraso calculado (variable). A continuación, el retraso que utiliza su sitio se determina como el valor mayor (un retraso mínimo) entre el valor de retardo delayAfterInvalidationMilliseconds establecido y el valor de retardo variable que se calcula utilizando delayAfterInvalidationPercentBuffer. El cálculo se realiza derivando el retraso real entre el momento en que una transacción ha finalizado y se han emitido los ID de invalidación y, a continuación, añadiendo el porcentaje de tiempo de almacenamiento intermedio especificado ( pc ). El valor de retraso se calcula en cada intervalo de periodo especificado por delayAfterInvalidationTuneIntervalSeconds. En este intervalo, se toma una muestra del tiempo que se tarda en utilizar en el cálculo un mensaje de invalidación de ida y vuelta (el envío y la recepción de un mensaje de invalidación exclusivo). Para valores positivos de delayAfterInvalidationPercentBuffer, el valor de retraso se calcula como rt + (rt*pc/100). Si rt es la muestra de tiempo de ida y vuelta y pc es el valor de porcentaje especificado. Valores aceptados:
Note: Este parámetro requiere que delayAfterInvalidationMilliseconds se establezca en un valor mayor que su valor predeterminado de 0 . De lo contrario, no se utiliza ningún retraso. |
![]() | seconds|60 | El número de segundos entre muestras de cuánto tiempo se tarda en enviar y recibir un mensaje de invalidación. Este valor se utiliza para derivar el almacenamiento intermedio de retardo variable para delayAfterInvalidationPercentBuffer. |
restCaching | true|false | Este parámetro le permite inhabilitar el almacenamiento en memoria caché mientras se ejecutan servicios REST. |
reduceInvalidationIds | true|false | Especifique true para reducir el número de mensajes de invalidación emitidos cuando los datos en memoria caché cambian en la base de datos. Los sistemas que tienen muchas JVM de servidor de aplicaciones de HCL Commerce pueden beneficiarse de este valor. No obstante, se puede producir determinado exceso de invalidación. Mida el impacto general en el rendimiento antes de elegir este valor para un sistema de producción. |
sizeable | true|false | Especifique verdadero (true) para implementar la interfaz com.ibm.websphere.cache.Sizeable para la mayoría de las entradas de memoria caché que utilizan las memorias caché de objetos de HCL Commerce siguientes:
Si se especifica verdadero (true) también se implementa la interfaz com.ibm.websphere.cache.Sizeable para la mayoría de mandatos almacenables en memoria caché utilizados de forma predeterminada por HCL Commerce. |
CacheName Por ejemplo, com.ibm.commerce.user.objects.OrganizationAccessBean | inhabilitado |DistributedMapName | commandCaching | Con CacheName se especifica una memoria caché lógica que utiliza la memoria caché de datos de Commerce. DistributedMapName es un nombre con el prefijo services/cache/. El DistributedMapName forma un nombre JNDI que se utiliza para localizar un DistributedMap que solía contener datos para la memoria caché lógica especificada. El DistributedMap utilizado es el primero de los objetos DistributedMap siguientes encontrados que existe: Consulte los nombres de memoria caché lógica y los DistributedMaps que utilizan de forma predeterminada.
Especifique disabled para impedir el almacenamiento en memoria caché para una memoria caché lógica especificada. Especifique commandCaching para utilizar el almacenamiento en memoria caché de mandatos en el baseCache DistributedMap predeterminado. |
avoidConcurrentCacheMiss | true|false | Especifique true para permitir sólo una hebra a la vez para ejecutar la misma consulta con los mismos parámetros.true |
<DistributedMapName/> Por ejemplo, <WCUserDistributedMapCache enabled="false"/> | enabled="[true|false]" maxInactivityTime="[seconds|86400]" maxTimeToLive="[seconds|172800]" maxTimeToLiveForAutoCacheEntries="[seconds|0]" reduceMemory="[true|false]" chunkSize="[number of rows|50]" delayAfterInvalidationMilliseconds="[milliseconds|0]"
restCaching="[true|false]" avoidConcurrentCacheMiss="[true|false]"> | Especifique enabled=false para impedir el uso del DistributedMap cuyo nombre es services/cache/DistributedMapName .Utilice los valores maxInactivityTime, maxTimeToLive, reduceMemory, chunkSize, delayAfterInvalidationMilliseconds, y restCaching para sustituir los valores globales correspondientes. Únicamente se aplican a entradas de memoria caché en el DistributedMap especificado. |
<CacheName/> Por ejemplo, <com.ibm.commerce.user.objects.OrganizationAccessBean enabled="false"/> | enabled="[true|false]" maxInactivityTime="[seconds|86400]" maxTimeToLive="[seconds|172800]" maxTimeToLiveForAutoCacheEntries="seconds|0" reduceMemory="[true|false]" chunkSize="[number of rows]|50" delayAfterInvalidationMilliseconds="[milliseconds|0]"
restCaching="[true|false]" avoidConcurrentCacheMiss="[true|false]"> | Especifique enabled=false para impedir el almacenamiento en memoria caché de la memoria caché lógica especificada a menos que commandCaching esté especificado explícitamente para dicha memoria caché lógica. Utilice los valores maxInactivityTime, maxTimeToLive, reduceMemory, chunkSize, delayAfterInvalidationMilliseconds, y restCaching para sustituir los valores globales y DistributedMap correspondientes. Únicamente se aplican a entradas de memoria caché para la memoria caché lógica especificada. Los valores maxInactivityTime y maxTimeToLive no tienen ningún efecto cuando se utiliza el almacenamiento en memoria caché de mandatos. En su lugar, utilice las etiquetas |
- Cuando todas las entradas de memoria caché para una instancia de memoria caché implementan la interfaz com.ibm.websphere.cache.Sizeable, DynaCache puede controlar la ocupación de memoria caché. Para obtener más información, consulte Dynamic cache service settings.
- Una entrada de memoria caché que implementa la interfaz com.ibm.websphere.cache.Sizeable proporciona una estimación de la ocupación de memoria a DynaCache. Esta estimación permite que DynaCache controle la ocupación de memoria global de cada instancia de memoria caché. La precisión de esta estimación puede variar. Las estimaciones observadas para las siguientes memorias caché de objeto son ligeramente superiores a la ocupación de memoria real.
- services/cache/DM_Cache (Memoria caché de marketing)
- services/cache/DM_UserCache (Memoria caché de comportamiento de usuario de marketing)
- dmap/IVCache (Memoria caché de disponibilidad de inventario externo)
- dmap/PriceCache (Memoria caché de precio externo)
- dmap/PR_Cache (Memoria caché de las reglas de precios)
- services/cache/WC*DistributedMapCache (todas las instancias de memoria caché de objetos de "memoria caché de datos")
DYNA1067E: La característica de tamaño de memoria caché en MB está inhabilitada porque no se puede asignar ningún tamaño al objeto en la memoria caché.
- Mientras que DynaCache implementa automáticamente la interfaz com.ibm.websphere.cache.Sizeable para entradas de memoria caché de servlet (JSP), los tamaños que se calculan para estas entradas pueden estar subestimados. Por ejemplo, la ocupación de memoria real de la memoria caché de servlet baseCache puede ser mayor que la ocupación de memoria calculada indicada por la aplicación de supervisor de memoria caché. Debido a esta subestimación del tamaño de memoria necesario, no se recomienda especificar el tamaño de memoria en MB para instancias de memoria caché de servlet.
- El valor de tamaño máximo de memoria caché normal también se utiliza para limitar el número de entradas de memoria caché que se conservan en memoria. Especifique un valor de tamaño máximo suficiente para cada instancia de memoria caché, para controlar la ocupación de memoria y evitar condiciones potenciales de falta de memoria.
Elemento <LocalTransactionCache>
La memoria caché de transacciones local mantiene las entradas de memoria caché en la memoria durante el tiempo que dure una sola transacción de base de datos.
<LocalTransactionCache
enabled="[true|false]"
maxSize="[number|50000]"
maxInvalidationldsPerTransaction="[number|50000]"
CacheName="[disabled|enabled]"/>
Nombre del elemento | Valores posibles (valor predeterminado en negrita) | Usage |
---|---|---|
habilitado | true|false | Especifique false para desactivar el almacenamiento en memoria caché de transacción local. No desactive el almacenamiento en memoria caché de transacciones local, excepto como parte de la determinación de problemas. Note: No desactive nunca el almacenamiento en memoria caché de transacciones local sin desactivar también el almacenamiento en memoria caché entre transacciones. |
maxSize |
| Especifique el número máximo de entradas de memoria caché que se pueden recordar mientras dura una transacción. Cada entrada de memoria caché permanece en la memoria hasta que finaliza la transacción actual. Una transacción de larga ejecución que crea demasiadas entradas de memoria caché puede quedarse sin memoria. Cuando se alcanza el límite especificado, la memoria caché de transacciones deja de crear entradas de memoria caché para el resto de la transacción actual. Este valor impide una condición de memoria agotada. |
maxInvalidationldsPerTransaction |
| Especifique el número máximo de operaciones de invalidación que se pueden ejecutar en una sola transacción. El conocimiento de cada operación de invalidación ejecutada debe retenerse durante el tiempo que dure la transacción actual. Una transacción de larga ejecución que ejecuta demasiadas operaciones de invalidación puede quedarse sin memoria. Cuando se alcanza el límite especificado, se borra toda la memoria caché de la transacción y el conocimiento de las operaciones de invalidación individuales se elimina de la memoria. Este valor impide una condición de memoria agotada. El uso de la memoria caché entre transacciones queda suspendido para el resto de la transacción. Todas las entradas de memoria caché se consideran invalidadas durante el resto de la transacción. |
CacheName Por ejemplo: com.ibm.commerce.user.objects.OrganizationAccessBean | inhabilitado|habilitado | CacheName especifica el nombre de una memoria caché lógica. Especifique disabled para impedir el almacenamiento en memoria caché en una memoria caché lógica especificada. No desactive el almacenamiento en memoria caché de transacciones local, excepto como parte de la determinación de problemas. Note: No desactive nunca el almacenamiento en memoria caché de transacciones local para una memoria caché lógica sin desactivar también el almacenamiento en memoria caché entre transacciones para la misma memoria caché lógica. |