Nous avons eu des problèmes continus avec notre échange d'instance ElastiCache Redis. Amazon semble avoir une surveillance interne brute en place qui remarque des pics d'utilisation de swap et redémarre simplement l'instance ElastiCache (perdant ainsi tous nos éléments mis en cache). Voici le graphique de BytesUsedForCache (ligne bleue) et SwapUsage (ligne orange) sur notre instance ElastiCache au cours des 14 derniers jours:
Vous pouvez voir le modèle de l'utilisation croissante des swaps sembler déclencher des redémarrages de notre instance ElastiCache, dans laquelle nous perdons tous nos éléments mis en cache (BytesUsedForCache tombe à 0).
L'onglet «Événements de cache» de notre tableau de bord ElastiCache contient les entrées correspondantes:
ID de la source | Type | Date | un événement
cache-instance-id | cache-cluster | Mar. 22 sept. 07:34:47 GMT-400 2015 | Nœud de cache 0001 redémarré
cache-instance-id | cache-cluster | Mar. 22 sept. 07:34:42 GMT-400 2015 | Erreur lors du redémarrage du moteur de cache sur le nœud 0001
cache-instance-id | cache-cluster | Dim. 20 sept. 11:13:05 GMT-400 2015 | Nœud de cache 0001 redémarré
cache-instance-id | cache-cluster | Jeu. 17 sept. 22:59:50 GMT-400 2015 | Nœud de cache 0001 redémarré
cache-instance-id | cache-cluster | Mer. 16 sept. 10:36:52 GMT-400 2015 | Nœud de cache 0001 redémarré
cache-instance-id | cache-cluster | Mar. 15 sept. 05:02:35 GMT-400 2015 | Nœud de cache 0001 redémarré
(couper les entrées précédentes)
SwapUsage - en utilisation normale, ni Memcached ni Redis ne devraient effectuer de swaps
Nos paramètres pertinents (non par défaut):
- Type d'instance:
cache.r3.2xlarge
maxmemory-policy
: allkeys-lru (nous utilisions auparavant le volatile-lru par défaut sans grande différence)maxmemory-samples
: dixreserved-memory
: 2500000000- En vérifiant la commande INFO sur l'instance, je vois
mem_fragmentation_ratio
entre 1,00 et 1,05
Nous avons contacté le support AWS et n'avons pas reçu beaucoup de conseils utiles: ils ont suggéré d'augmenter encore plus la mémoire réservée (la valeur par défaut est 0 et nous avons 2,5 Go réservés). Nous n'avons pas de réplication ou d'instantanés configurés pour cette instance de cache, donc je pense qu'aucun BGSAVE ne devrait se produire et entraîner une utilisation supplémentaire de la mémoire.
Le maxmemory
plafond d'un cache.r3.2xlarge est de 62495129600 octets, et bien que nous atteignions reserved-memory
rapidement notre plafond (moins notre ), il me semble étrange que le système d'exploitation hôte se sente obligé d'utiliser autant de swap ici, et si rapidement, sauf si Amazon a augmenté les paramètres de permutation du système d'exploitation pour une raison quelconque. Avez-vous des idées sur la raison pour laquelle nous provoquerions autant d'échanges sur ElastiCache / Redis, ou une solution de contournement que nous pourrions essayer?