2010-11-03 3 views
1

Nous utilisons Memcached depuis un moment et avons récemment commencé à tester Membase dans AWS. Nous testons une instance unique de Membase 1.6.0 sur une grande instance EC2 avec 5 Go de RAM, un disque de 750 Go (Linux FC8).Blocage de la membrane lors de l'expulsion de la clé?

Nous avons remarqué que SQLite semble bloquer les purges d'expulsions toutes les heures lorsque expiryPagerSleeptime se réveille. Bien que cela soit attendu (parce que SQLite utilise le verrouillage au niveau de la base de données), nous ne nous attendions pas à ce que Membase bloque aussi.

Dans ce cas, il semble que pendant que SQLite supprime les anciennes clés, les «opérations par seconde» de la membrane tombent à zéro ou près de zéro pendant plusieurs minutes. Une fois le processus d'éviction terminé, le serveur Membase récupère rapidement. J'aurais anticipé que les lectures de Membase RAM continueraient quand SQLite était verrouillé mais cela ne semble pas être le cas. Tout s'arrête; les clients espions lancent des flux d'exceptions lorsqu'ils attendent les données qui n'arrivent jamais. Mon impression à partir de la docs était que Membase était asynchrone et continuerait à servir des lectures de la mémoire vive (RAM). J'apprécierais toute aide ou suggestion pour empêcher Membase de bloquer les expulsions clés. C'est un problème sérieux pour nous, car il semble qu'il faut environ 4 minutes pour que ce processus d'expulsion se termine et que l'arriéré dans la file d'attente du disque disparaisse. Cela signifie que toutes les heures, Membase est effectivement hors ligne pendant 4 minutes.

Je devrais également mentionner que ceci se produit une fois que les données sont plus grandes que RAM (et sa taille croissante sur le disque). Nous n'avons pas remarqué de problèmes d'expulsion de clé lorsque les données étaient en RAM (probablement parce que l'expulsion de la clé dans la RAM est trop rapide pour être détectable.)

Répondre

Questions connexes