内核资源使用
介绍与操作系统内核相关的参数,这些参数是否生效依赖于操作系统的设置。
max_files_per_process
参数说明: 设置每个服务器进程允许同时打开的最大文件数目。如果操作系统内核强制一个合理的数目,则不需要设置。
但是在一些平台上(特别是大多数BSD系统),内核允许独立进程打开比系统真正可以支持的数目大得多的文件数。如果用户发现有的“Too many open files”这样的失败现象,请尝试缩小这个设置。通常情况下需要满足,系统FD(file descriptor)数量>=最大并发数*数据库节点个数*max_files_per_process*3。
该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
取值范围: 整型,25~2147483647。
默认值: 1000
shared_preload_libraries
参数说明: 此参数用于声明一个或者多个在服务器启动的时候预先装载的共享库,多个库名称之间用逗号分隔。比如 '$libdir/mylib' 会在加载标准库目录中的库文件之前预先加载mylib.so(某些平台上可能是mylib.sl)库文件。
库名称的解析方式与 dynamic_library_path 配合使用。不含目录的名称(例如 a.so、b.so)按照该参数指定的目录顺序查找;如果搜索路径为空且库文件无法定位,服务会启动失败。包含目录的名称(例如绝对路径或 $libdir/a)直接解析指定路径,不依赖该搜索目录列表。
例如,预加载库 a.so 和 b.so 位于 /opt/myplugins 时,可以配置:
dynamic_library_path = '/opt/myplugins:$libdir'
shared_preload_libraries = 'a.so,b.so'配置前应确保所有实际预加载的库(包括当前版本默认预加载的库)均可定位、可访问并与服务器兼容。将 dynamic_library_path 设为空字符串不会取消预加载列表,也不会忽略加载失败。
可以用这个方法预先装载openGauss的存储过程库,通常是使用 '$libdir/plXXX' 语法。XXX只能是pgsql、perl、tcl、python之一。
通过预先装载一个共享库并在需要的时候初始化它,可以避免第一次使用这个库的加载时间。但是启动每个服务器进程的时间可能会增加,即使进程从来没有使用过这些库。因此建议对那些将被大多数会话使用的库才使用这个选项。
该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
须知
- 如果被声明的库不存在,openGauss服务将会启动失败。
- 每一个支持openGauss的库都有一个特殊的标记用于保证兼容性。因此,不支持openGauss的库不能用这种方法加载。
取值范围: 字符串
默认值: 空