Set up AlloyDB Omni for production

This page shows common settings when using AlloyDB Omni for production workloads.

Single-server

Enable huge pages

AlloyDB Omni, just like PostgreSQL, supports the use of huge pages. This requires your machine to have huge pages enabled, and you also need to enable a database setting huge_pages.

  1. Run the provided script to enable huge pages on your machine:

    docker run --rm --privileged google/alloydbomni setup-host
    
  2. Add the following line to your postgresql.conf to enable huge pages:

    huge_pages=on
    

Enable swapping

Swapping in the operating system allows to extend available physical memory by moving inactive memory pages between random access memory (RAM) and the hard disk to free up RAM space for active processes. AlloyDB Omni uses swapping when it is under high load and requires extra memory.

To check how much swapping space is enabled on your system, run the following:

cat /proc/meminfo | grep SwapTotal

The output looks similar to the following:

SwapTotal:      165748732 kB

To enable swapping on your operating system if the output value is 0, see the following:

Enable core dumps

If AlloyDB Omni encounters an unrecoverable error and crashes, it is helpful to have a core dump for analysis. A core dump is a snapshot of the memory of the AlloyDB Omni process at the point of its crash.

To set up core dumps, set up kernel.core_pattern as follows:

  1. Use the sysctl command to configure run time kernel parameters.
  2. To set the kernel.core_pattern immediately, use: posix-terminal sysctl -w kernel.core_pattern="CORE_PATTERN" Replace CORE_PATTERN with a core filename pattern such as "%e-%t.core". For more information on core filename patterns, see How to set process core file names for details. The systemd-coredump handler allows further configuration of your coredump settings. The tool is installed by default in RHEL. On Debian and Ubuntu systems, run sudo apt install coredumpctl to install the tool. When you start AlloyDB Omni, ensure that you pass the --ulimit=core:-1:-1 argument in the docker run command: posix-terminal docker run --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ --ulimit=core:-1:-1 \ -p HOST_PORT:5432 -d google/alloydbomni Replace the following:
  • CONTAINER_NAME: the name of a new AlloyDB Omni container—for example, my-omni-1.
  • <code>NEW_PASSWORD: the password assigned to new container's postgres user after its creation.

Set up systemd units to run operations automatically

If you run AlloyDB Omni on a dedicated server, it is helpful to have AlloyDB Omni start automatically when the server boots up. One way to do this is through systemd units.

In this example setup, when the server boots, huge pages are enabled on the operating system automatically.

  1. Create a file in /etc/systemd/system/alloydb-setup-env.service:

    [Unit]
    Description=Setup huge pages for AlloyDB Omni
    
    [Service]
    Type=oneshot
    
    ExecStart=/usr/bin/docker run --rm --privileged google/alloydbomni setup-host
    
    [Install]
    WantedBy=multi-user.target
    
  2. Enable the service as follows:

    sudo systemctl enable alloydb-setup-env.service
    

What's next