2016-03-26 2 views
1

Je peux trouver des hôtes VPS bon marchés avec 128 Mo de RAM, et je me demande si cela suffit pour exécuter un nœud de caisse pour une base de données minuscule, initialement pour les tests. (Je ne cherche pas recommandé mémoire, mais le minimum un, pour ne pas courir dans les exceptions hors de mémoire. Crate est censé être le seul service dans le nœud.)Caisse - Quelle est la quantité minimale de mémoire requise pour un hôte de nœud?

+0

Quels types de requêtes pensez-vous pouvoir exécuter - et combien d'enregistrements attendez-vous? De toute évidence, moins il y a de mémoire, moins votre réponse peut traiter de données. – Christian

+0

~ 10000 enregistrements de ~ 10Kb chacun; au pic, il doit gérer 10 écritures/minute et 100 lectures/minute. Requêtes simples (sans jointures) sur les valeurs des colonnes, les éléments de tableau et une colonne fulltext. –

+0

Chaque lecture doit contenir au plus 100 enregistrements de 10 Ko chacun (total maximum de 1 Mo/lecture). Chaque écriture enregistre un seul enregistrement. –

Répondre

2

Il est possible d'exécuter Crate dans un tel environnement. Je ne le recommanderais pas, cependant. Dans tous les cas, vous devez prendre quelques précautions:

  1. Sélectionnez une distribution Linux allégée qui démarre et s'exécute avec une empreinte de mémoire aussi petite. Alpine pourrait être un choix.
  2. Installez Java. Vous devez au moins ouvrirjdk7 (mise à jour 55 et plus).
  3. Installez et démarrez Crate à partir de l'archive, comme expliqué sur le site Web Crate.

Sur une machine virtuelle avec 128 Mo de RAM au-dessus de Alpine 3.3, je l'ai installé openjdk8-jre (vous devez activer les référentiels communautaires /etc/apk/repositories) sur le disque. J'ai téléchargé l'archive tar de Crate 0.54.7 et je viens de l'extraire. J'ai mis CRATE_HEAP_SIZE=64m car c'est la moitié recommandée de la mémoire disponible.

J'ai créé une table "demo"

DROP TABLE IF EXISTS demo; 
CREATE TABLE demo (
    data string 
); 

et l'a rempli avec 10.000 enregistrements de chaînes aléatoires de 10 Ko chacun avec un script bash lent:

head -c7380 /dev/urandom | uuencode - | grep ^M | tr -d '\n\047' 

Cela a pris quelques minutes (environ 20 enregistrements/s), mais avec des insertions en vrac, il devrait être façon plus rapide et prendre quelques secondes.

La quantité nette de données était d'environ 100 Mo et a pris 287 Mo brut sur le disque, tel que rapporté par l'interface d'administration.

Système d'exploitation, le logiciel installé et les données ont réclamé 820 Mo sur le disque.

configuré à deux fois la quantité de mémoire que swapspace et a obtenu l'empreinte suivante (le processus de Crate lui-même sans données prend environ 40 Mo):

# free 
      total  used  free  shared buffers  cached 
Mem:  120472  117572  2900   0  652  6676 
-/+ buffers/cache:  110244  10228 
Swap:  240636  131496  109140 

Une recherche en texte intégral sur tous les 10.000 enregistrements (SELECT count(*) FROM demo WHERE data LIKE '%ABC%') a pris environ 1,9 secondes.

Résumé: Oui, c'est possible, mais vous perdez beaucoup de fonctionnalités si vous le faites réellement. Vos résultats dépendent fortement du type de requêtes que vous exécutez réellement.

1

J'ai joué autour d'un peu combien vous pourriez réduire la taille de HEAP, et il semble que tas 64MB (128MB mémoire) pourrait fonctionner pour votre cas d'utilisation.

Assurez-vous de définir la taille de la pile en utilisant correctement la variable d'environnement CRATE_HEAP_SIZE (docs) et également définir bootstrap.mlockall: true (docs) à la machine virtuelle Java ne pas échanger la mémoire.

Cependant, je recommanderais au moins 256MB HEAP (512MB mémoire).