Ubuntu Firebird2 经典服务器配置使用所有 CPU

Ubuntu Firebird2 Classic Server config to use all CPU

我在 Ubuntu 16.04 服务器上使用 Firebird 2.0.7 CS。由于使用的软件,无法升级到高版本,需要低版本。 我之前使用过 SuperServer 版本,但是在 Linux 上参数 CpuAffinityMask 被忽略了。

SuperServer 版本的工作很糟糕,因为在 Linux 上它只使用 1 个核心。 ClassicServer版本好一点,因为它给1个用户分配了1个核心。

当我在程序中运行要求很高的任务时,fb_inet_server使用100%的1个核心,但其他23个核心空闲。如何为这个进程分配更多核心?

CpuAffinityMask 设置仅适用于 SuperServer(然后仅适用于 Windows)。

如果您使用的是经典服务器,那么 Firebird 可以(而且它将)使用所有内核 如果有足够的 activity,但是 Firebird 进程需要协调他们的努力,如果存在大量锁争用,可能会导致性能下降。

要减少锁争用,您可能需要增加 LockHashSlots 设置。

增加页面缓冲区的数量也可能有所帮助,但请记住,对于经典服务器,此设置是针对每个进程的,可能会增加内存使用量。

与您所说的相反,Firebird 不会 "assign[s] 1 core to the 1 user."。经典服务器将为每个连接创建一个进程,这些进程的线程将由 OS 在任何可用核心上调度。