一、问题背景
linux 使用 systemd 设置 opengauss 服务自启动,数据库运行一段时间就会自己挂掉,查看日志 pg_log/postgresql-日期.log 发现存在大量 " too many open files " 的报错,而使用 opengauss 自带的工具 " pg_ctl " 启动时并不会出现此报错(前提设置了最大进程和最大文件打开数,配置确认无误时),这说明 systemd 在启动 opengauss 服务时并未调用到配置在 /etc/security/limits.conf 下的限制数参数。
二、问题展示
三、问题解决
vi /usr/lib/systemd/system/opengauss.service (此文件如果没有可以自己创建)
# 以下为文件内容
[Unit]
Description=OpenGauss Database Server
After=syslog.target network.target
[Service]
Type=forking # 后台运行
# Type=simple # 此参数开启后,服务启动后会自动关闭,和forking只用一个
User=omm # 服务启动用户
Group=dbgrp # 服务启动用户的属组
LimitNOFILE=1000000 # 最大文件限制,本篇文章的解决问题的重点
# EnvironmentFile=/etc/security/limits.conf # 调用限制数参数