【发布时间】:2017-08-21 14:53:52
【问题描述】:
我的服务器中有 16G 内存。我分配了下一个内存参数:
effective_cache_size = 10GB
work_mem = 128MB
maintenance_work_mem = 4GB
shared_buffers = 4000MB
我的服务器只专用于 postgresql。当我运行一个执行大选择的过程时,我看到 postgresql 使用了服务器上的所有内存,这就是我的状态:
[/PostgreSQL/] : free -m
total used free shared buff/cache available
Mem: 15883 291 158 4109 15433 11112
Swap: 3815 106 3709
正常吗?这可能会影响我使用连接运行的复杂选择?
【问题讨论】:
-
我猜它在 RAM 中保留尽可能多的数据以用于缓存目的。
-
它在哪里使用“全部”内存?
available = 11112表示您的 16GB 中仍有 11GB 可用。 -
您将内核 fs 缓存使用与“使用”混淆了。内核从文件系统中获取所有空闲内存并缓存它可以缓存的所有内容,但第二次请求更多内存时,内核会转储一些缓存并将该内存移交给请求进程。这是完全正常的。