Jenkins和PostgreSQL正在消耗大量内存

Jenkins和PostgreSQL正在消耗大量内存,postgresql,jenkins,Postgresql,Jenkins,我们有一个运行在DebianLinux上的数据仓库服务器,我们使用PostgreSQL、Jenkins和Python jenkins和Postgres已经用了几天的时间,CPU的内存消耗了很多。他们试图从谷歌上找到并检查所有的方法,但问题仍然存在 任何人都可以告诉我如何减少内存消耗,这将非常有帮助。 下面是自由-m的输出 total used free shared buff/cache available Mem:

我们有一个运行在DebianLinux上的数据仓库服务器,我们使用PostgreSQL、Jenkins和Python

jenkins和Postgres已经用了几天的时间,CPU的内存消耗了很多。他们试图从谷歌上找到并检查所有的方法,但问题仍然存在

任何人都可以告诉我如何减少内存消耗,这将非常有帮助。

下面是自由-m的输出

              total        used        free      shared  buff/cache   available
Mem:          63805        9152         429       16780       54223       37166
Swap:             0           0           0
下面是postgresql.conf文件 以下是系统配置,

来自htop的结果

对于Jenkins,使用以下JAVA选项运行它

JAVA_OPTS=-Xms200m -Xmx300m -XX:PermSize=68m -XX:MaxPermSize=100m
对于postgres,从选项开始

-c shared_buffers=256MB

这些值是我在8GB内存的小型homelab上使用的值,您可能希望增加这些值以匹配硬件

请不要将文本作为图像发布。它很难阅读和处理

我看不出你有什么问题

您的计算机有64 GB RAM,16 GB用于PostgreSQL共享内存(如您配置的),9 GB用于进程使用的私有内存,37 GB用于空闲内存(可用
条目)


Linux为文件系统缓存使用可用内存,这提高了PostgreSQL的性能。
free
的低值仅表示缓存正在使用。

纯文本文件不应显示为屏幕截图,而应显示为格式化文本。@a_horse_与_no_name我正在用“Select*on conflict(order_id)do UPDATE…”增量更新表,但表的大小为27GB,即使它只包含很少的记录,这个表上运行的是一个真空作业,这会导致CPU被完全利用。我们可以通过任何方式减小它的大小。JENKINS JAVA_OPTS=-Xms200m-Xmx300m-XX:PermSize=68m-XX:MaxPermSize=100m中的这个选项是什么?根据它的建议配置PostgreSQL是JVM的堆设置。我找不到我在找到这些时使用的文章,但这里有一篇不错的文章,肯定会在下一次发布图像时处理。但是CPU也很高,当我们检查时,发现一个特定桌子上的自动吸尘作业运行了很长时间,我们可以将自动吸尘器的工作更改为使用一定百分比的CPU还是将其关闭?这是另一个问题。你应该调整你的陈述。如果关闭自动真空,数据库将中断。永远不要那样做。您应该减少
autovacuum\u vacuum\u成本\u延迟
,以便autovacuum消耗更多的CPU(并且更快地完成,这是目标)。