add abra command for vacuum full
This commit is contained in:
@ -202,10 +202,10 @@ RETENTION_MAX_LIFETIME=4w
|
|||||||
## State compression (reduces database bloat from federation)
|
## State compression (reduces database bloat from federation)
|
||||||
## Runs synapse_auto_compressor daily, built from source on first start
|
## Runs synapse_auto_compressor daily, built from source on first start
|
||||||
#COMPOSE_FILE="$COMPOSE_FILE:compose.compress-state.yml"
|
#COMPOSE_FILE="$COMPOSE_FILE:compose.compress-state.yml"
|
||||||
#COMPRESS_STATE_ENTRYPOINT_VERSION=v1
|
# See https://github.com/matrix-org/rust-synapse-compress-state#running-options
|
||||||
#STATE_COMPRESS_CHUNK_SIZE=500
|
#STATE_COMPRESS_CHUNK_SIZE=500
|
||||||
#STATE_COMPRESS_CHUNKS=100
|
#STATE_COMPRESS_CHUNKS=100
|
||||||
#STATE_COMPRESS_INTERVAL=86400
|
#STATE_COMPRESS_SCHEDULE=0 3 * * *
|
||||||
|
|
||||||
## Admin interface at /admin
|
## Admin interface at /admin
|
||||||
#COMPOSE_FILE="$COMPOSE_FILE:compose.admin.yml"
|
#COMPOSE_FILE="$COMPOSE_FILE:compose.admin.yml"
|
||||||
|
|||||||
10
abra.sh
10
abra.sh
@ -10,6 +10,16 @@ export WK_SERVER_VERSION=v1
|
|||||||
export WK_CLIENT_VERSION=v1
|
export WK_CLIENT_VERSION=v1
|
||||||
export PG_BACKUP_VERSION=v2
|
export PG_BACKUP_VERSION=v2
|
||||||
export ADMIN_CONFIG_VERSION=v1
|
export ADMIN_CONFIG_VERSION=v1
|
||||||
|
export COMPRESS_STATE_ENTRYPOINT_VERSION=v5
|
||||||
|
|
||||||
|
vacuum_state() {
|
||||||
|
echo "WARNING: VACUUM FULL locks the state_groups_state table."
|
||||||
|
echo "Synapse will be unable to process events until this completes."
|
||||||
|
echo "Running VACUUM FULL on state_groups_state..."
|
||||||
|
psql -U synapse -d synapse -c "VACUUM FULL state_groups_state;"
|
||||||
|
echo "VACUUM FULL complete."
|
||||||
|
psql -U synapse -d synapse -c "SELECT pg_size_pretty(pg_total_relation_size('state_groups_state'::regclass)) AS size;"
|
||||||
|
}
|
||||||
|
|
||||||
set_admin () {
|
set_admin () {
|
||||||
admin=akadmin
|
admin=akadmin
|
||||||
|
|||||||
@ -7,7 +7,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- STATE_COMPRESS_CHUNK_SIZE=${STATE_COMPRESS_CHUNK_SIZE:-500}
|
- STATE_COMPRESS_CHUNK_SIZE=${STATE_COMPRESS_CHUNK_SIZE:-500}
|
||||||
- STATE_COMPRESS_CHUNKS=${STATE_COMPRESS_CHUNKS:-100}
|
- STATE_COMPRESS_CHUNKS=${STATE_COMPRESS_CHUNKS:-100}
|
||||||
- STATE_COMPRESS_INTERVAL=${STATE_COMPRESS_INTERVAL:-86400}
|
- STATE_COMPRESS_SCHEDULE=${STATE_COMPRESS_SCHEDULE:-0 3 * * *}
|
||||||
secrets:
|
secrets:
|
||||||
- db_password
|
- db_password
|
||||||
configs:
|
configs:
|
||||||
|
|||||||
@ -7,7 +7,7 @@ DB_PASS=$(cat /run/secrets/db_password)
|
|||||||
CONN="postgresql://synapse:${DB_PASS}@db:5432/synapse"
|
CONN="postgresql://synapse:${DB_PASS}@db:5432/synapse"
|
||||||
CHUNK_SIZE="${STATE_COMPRESS_CHUNK_SIZE:-500}"
|
CHUNK_SIZE="${STATE_COMPRESS_CHUNK_SIZE:-500}"
|
||||||
CHUNKS="${STATE_COMPRESS_CHUNKS:-100}"
|
CHUNKS="${STATE_COMPRESS_CHUNKS:-100}"
|
||||||
INTERVAL="${STATE_COMPRESS_INTERVAL:-86400}"
|
SCHEDULE="${STATE_COMPRESS_SCHEDULE:-0 3 * * *}"
|
||||||
|
|
||||||
# Build from source if binary doesn't exist
|
# Build from source if binary doesn't exist
|
||||||
if [ ! -f "$BINARY" ]; then
|
if [ ! -f "$BINARY" ]; then
|
||||||
@ -25,10 +25,22 @@ else
|
|||||||
echo "[compress-state] Using cached binary"
|
echo "[compress-state] Using cached binary"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Run compressor in a loop
|
# Run once at startup
|
||||||
while true; do
|
echo "[compress-state] Running initial compression at $(date)"
|
||||||
echo "[compress-state] Running at $(date)"
|
"$BINARY" -p "$CONN" -c "$CHUNK_SIZE" -n "$CHUNKS" || echo "[compress-state] Error: $?"
|
||||||
"$BINARY" -p "$CONN" -c "$CHUNK_SIZE" -n "$CHUNKS" || echo "[compress-state] Error: $?"
|
|
||||||
echo "[compress-state] Done. Sleeping ${INTERVAL}s"
|
# Set up cron job
|
||||||
sleep "$INTERVAL"
|
CRON_SCRIPT="/build/run_compressor.sh"
|
||||||
done
|
cat > "$CRON_SCRIPT" <<EOF
|
||||||
|
#!/bin/sh
|
||||||
|
echo "[compress-state] Running at \$(date)"
|
||||||
|
$BINARY -p "$CONN" -c $CHUNK_SIZE -n $CHUNKS || echo "[compress-state] Error: \$?"
|
||||||
|
echo "[compress-state] Done at \$(date)"
|
||||||
|
EOF
|
||||||
|
chmod +x "$CRON_SCRIPT"
|
||||||
|
|
||||||
|
echo "$SCHEDULE $CRON_SCRIPT" | crontab -
|
||||||
|
echo "[compress-state] Cron scheduled: $SCHEDULE"
|
||||||
|
|
||||||
|
# Run crond in the foreground
|
||||||
|
exec crond -f -l 2
|
||||||
|
|||||||
Reference in New Issue
Block a user