尽管剩余 space 足够,但 Postgres 无法清理(无法调整共享内存段字节的大小)
Postgres cant vacuum despite enough space left (could not resize shared memory segment bytes)
我有一个 docker-compose 文件
postgres:
container_name: second_postgres_container
image: postgres:latest
shm_size: 1g
我想用真空吸尘器 table,但得到了
ERROR: could not resize shared memory segment "/PostgreSQL.301371499" to 1073795648 bytes: No space left on device
第一个数字比右边的数字小,而且我服务器上的space已经足够了(只占用了32%)
我想知道它是否认为 docker 容器不够大(因为它会按需调整大小(?))或者其他地方可能是问题所在?
注意
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
95c689aa4d38 redis:latest "docker-entrypoint.s…" 10 days ago Up 10 days 0.0.0.0:6379->6379/tcp second_redis_container
f9efc8fad63a postgres:latest "docker-entrypoint.s…" 2 weeks ago Up 2 weeks 0.0.0.0:5433->5432/tcp second_postgres_container
docker exec -it f9efc8fad63a df -h /dev/shm
Filesystem Size Used Avail Use% Mounted on
shm 1.0G 2.4M 1022M 1% /dev/shm
df -m
Filesystem 1M-blocks Used Available Use% Mounted on
udev 16019 0 16019 0% /dev
tmpfs 3207 321 2887 11% /run
/dev/md1 450041 132951 294207 32% /
tmpfs 16035 0 16035 0% /dev/shm
tmpfs 5 0 5 0% /run/lock
tmpfs 16035 0 16035 0% /sys/fs/cgroup
tmpfs 3207 0 3207 0% /run/user/1000
overlay 450041 132951 294207 32% /var/lib/docker/overlay2/0abe6aee8caba5096bd53904c5d47628b281f5d12f0a9205ad41923215cf9c6f/merged
overlay 450041 132951 294207 32% /var/lib/docker/overlay2/6ab0dde3640b8f2108d545979ef0710ccf020e6b122abd372b6e37d3ced272cb/merged
感谢
这表明并行查询 运行 内存不足。原因可能是容器上共享内存的限制性设置。
您可以通过将 max_parallel_maintenance_workers
设置为 0 来解决此问题。然后 VACUUM
将不会使用并行工作器。
我想通了(有朋友帮忙:))
我想我数不过来 1073795648
比我需要的吸尘器稍微多一点所以确实 shm 大小 10g 而不是 1g 有帮助
我有一个 docker-compose 文件
postgres:
container_name: second_postgres_container
image: postgres:latest
shm_size: 1g
我想用真空吸尘器 table,但得到了
ERROR: could not resize shared memory segment "/PostgreSQL.301371499" to 1073795648 bytes: No space left on device
第一个数字比右边的数字小,而且我服务器上的space已经足够了(只占用了32%)
我想知道它是否认为 docker 容器不够大(因为它会按需调整大小(?))或者其他地方可能是问题所在?
注意
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
95c689aa4d38 redis:latest "docker-entrypoint.s…" 10 days ago Up 10 days 0.0.0.0:6379->6379/tcp second_redis_container
f9efc8fad63a postgres:latest "docker-entrypoint.s…" 2 weeks ago Up 2 weeks 0.0.0.0:5433->5432/tcp second_postgres_container
docker exec -it f9efc8fad63a df -h /dev/shm
Filesystem Size Used Avail Use% Mounted on
shm 1.0G 2.4M 1022M 1% /dev/shm
df -m
Filesystem 1M-blocks Used Available Use% Mounted on
udev 16019 0 16019 0% /dev
tmpfs 3207 321 2887 11% /run
/dev/md1 450041 132951 294207 32% /
tmpfs 16035 0 16035 0% /dev/shm
tmpfs 5 0 5 0% /run/lock
tmpfs 16035 0 16035 0% /sys/fs/cgroup
tmpfs 3207 0 3207 0% /run/user/1000
overlay 450041 132951 294207 32% /var/lib/docker/overlay2/0abe6aee8caba5096bd53904c5d47628b281f5d12f0a9205ad41923215cf9c6f/merged
overlay 450041 132951 294207 32% /var/lib/docker/overlay2/6ab0dde3640b8f2108d545979ef0710ccf020e6b122abd372b6e37d3ced272cb/merged
感谢
这表明并行查询 运行 内存不足。原因可能是容器上共享内存的限制性设置。
您可以通过将 max_parallel_maintenance_workers
设置为 0 来解决此问题。然后 VACUUM
将不会使用并行工作器。
我想通了(有朋友帮忙:))
我想我数不过来 1073795648
比我需要的吸尘器稍微多一点所以确实 shm 大小 10g 而不是 1g 有帮助