Сценарий для оповещения об изменении размера необходим для базы данных вписаться в память? - PullRequest
2 голосов
/ 17 июня 2019

Я хочу создать bash-скрипт, который предупредит меня о том, что размер моей базы данных становится слишком большим, чтобы уместиться в память. Эффективный скрипт bash будет запускаться ежедневно и сообщать мне по электронной почте только при db_size / memory >= 0.5.

Например: You should to size up your Digital Ocean Droplet soon for your PostgreSQL server: db_size = 0.6 GB; system_memory = 1.0 GB;

Проблема в том, что я не уверен, как именно сделать это сравнение. Сначала я использовал команду psql pg_size_pretty и команду Linux free.. Можно ли провести хорошее / точное сравнение между db_size и общим объемом памяти (или другим полем), чтобы предупредить меня, когда мне нужно изменить размер? моя капелька? Или уже есть какие-либо инструменты, которые делают подобные вещи?

Bash Script

#!/usr/bin/env bash
db_size=`psql dbname username -c "SELECT pg_size_pretty( pg_database_size('dbname') );"`
echo $db_size

free 

выход

user@postgres-server:~/gitrepo/scripts/cronjobs# bash postgres_db_size_check.sh 
pg_size_pretty ---------------- 6976 kB (1 row)
              total        used        free      shared  buff/cache   available
Mem:        1016000       48648      142404       54492      824948      699852
Swap:             0           0           0

Какое правильное сравнение следует использовать в приведенных выше выходных данных? В выходных данных выше размер базы данных PostgreSQL составляет всего 6,976 МБ, а доступная память сервера - 1 016,00 МБ. Так что сейчас у нас 0,6% используемой оперативной памяти (6,976 / 1,016,00) с <20 пользователями. Когда я масштабирую свою базу данных, я ожидаю, что размер базы данных быстро увеличится, и я хочу опередить ее до того, как возникнет проблема с ОЗУ. </p>

После некоторого изучения Настройка PostgreSQL Я понял, что дать PostgreSQL больше памяти для использования не так просто, как просто увеличить объем оперативной памяти. Скорее всего, необходимо установить несколько переменных, чтобы использовать дополнительную память, включая work_mem ,ffective_cache_size и shared_buffers. Я говорю это, чтобы заметить, что я понимаю, что увеличение объема оперативной памяти моего сервера - это только один шаг в этом процессе.

Я задал этот вопрос об администраторах баз данных, но никто не получил от меня ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...