我在Windows OS(系统:i5第2代)上将PostgreSQL 9.5和Java 8应用程序一起使用。我注意到当我的应用程序执行时,有几个PostgreSQL进程/子进程是动态创建/删除的。
这些PostgreSQL进程几乎使用了所有CPU(> 95%),这是由于系统上安装的其他应用程序出现了问题。
我最近开始了解CPU亲和力。目前,我正在执行PowerShell脚本(在Java应用程序之外),该脚本会定期检查并为执行中的所有PostgreSQL进程设置所需的cpu亲和力值。
我正在寻找一种无需执行外部脚本和/或需要一次性配置的方法。
PostgreSQL 9.5是否支持一种配置,通过该配置我们可以设置PostgreSQL进程使用的最大CPU内核?
我正在寻找解决方案,但找不到任何解决方法。
答案 0 :(得分:1)
无法在PostgreSQL配置中进行设置。
但是您可以使用以下命令从cmd.exe
启动PostgreSQL服务器:
start /affinity 3 C:\path\to\postgresql.exe C:\path\to\data\directory
这将允许PostgreSQL仅在twp个“第一”内核上运行。
核心编号为1、2、4、8、16,依此类推,您使用希望PostgreSQL运行的核心总和作为/affinity
的参数。例如,如果只希望它在第三核和第四核上运行,则可以使用/affinity 12
。
这应该可行,因为Microsoft documentation说:
任何子进程或新实例化的本地进程都将继承进程亲和力。