2016-03-26 4 views
1

Я могу найти дешевые хосты VPS с 128 МБ ОЗУ, и мне интересно, достаточно ли этого для запуска узла ящика для крошечной базы данных, первоначально для тестирования. (Я не ищу рекомендуется памяти, но минимум один, чтобы не нарваться на вышедших из памяти исключений. Клеть должна быть единственной службой в узле.)Crate - Какова минимальная потребность в памяти для узла узла?

+0

Какие запросы вы ожидаете от запуска - и сколько записей вы ожидаете? очевидно, чем меньше памяти, тем меньше данных может обрабатывать ваш ответ. – Christian

+0

~ 10000 записей ~ 10Kb каждый; на пике он должен обрабатывать 10 записей в минуту и ​​100 раз в минуту. Простые запросы (без объединения) по значениям столбцов, элементам массива и одному столбцу полного текста. –

+0

Каждое чтение должно содержать не более 100 записей по 10 Кб каждый (общий максимум 1 МБ/чтение). Каждая запись сохраняет только одну запись. –

ответ

2

Возможно использование Crate в такой среде. Я бы не рекомендовал его. В любом случае вам необходимо принять несколько мер предосторожности:

  1. Выберите скудный дистрибутив Linux, который фактически загружается и запускается с таким небольшим объемом памяти. Альпийский может быть одним выбором.
  2. Установите Java. Вам нужно хотя бы openjdk7 (обновление 55 и выше).
  3. Установите и запустите ящик из tarball, как описано на веб-сайте Crate.

На виртуальной машине с 128 Мб оперативной памяти на вершине альпийской 3.3, я установил openjdk8-jre (вы должны включить сообщества репозиториев в /etc/apk/repositories) на диске. Я загрузил tar-файл Crate 0.54.7 и просто извлек его. Я установил CRATE_HEAP_SIZE=64m, так как это рекомендуемая половина доступной памяти.

Я создал таблицу «демо»

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

и наполнил его до 10000 записей 10 KB случайных строк каждая с медленным Баш скрипт:

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

Это заняло несколько минут (около 20 записей/с), но с объемными вставками он должен быть способ быстрее и просто взять секунды.

Чистый объем данных был около 100 МБ и занимал 287 МБ брутто на диске, как сообщается административным интерфейсом администратора.

Операционная система, установленное программное обеспечение и данные в целом заявили 820 МБ на диске.

Я настроил два раза больше памяти, как пространство для свопинга и получил следующий след (процесс Crate сам без данных занимает около 40 МБ):

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

полнотекстовый поиск по всем 10000 записей (SELECT count(*) FROM demo WHERE data LIKE '%ABC%') принял около 1,9 секунды.

Резюме: Да, это возможно, но вы теряете много возможностей, если на самом деле это так. Ваши результаты будут в значительной степени зависеть от типа запросов, которые вы на самом деле выполняете.

1

Я просто играл примерно немного, насколько вы могли бы уменьшить размер HEAP, и это выглядит так: 64MB куча (памяти) может работать в вашем случае использования.

Убедитесь, что вы установите размер НЕАР правильно используя переменную CRATE_HEAP_SIZE (docs) среды, а также установить bootstrap.mlockall: true (docs) к JVM не поменять память.

Однако я бы порекомендовал не менее 256MB HEAP (512MB).