• limit设置
    • 调整 ulimit
    • 查看ulimit

    limit设置

    如果采用Linux操作系统,在安装 SequoiaDB 产品之后,建议根据实际情况配置数据库进程的 ulimit,以保障系统的稳定高效运行。

    调整 ulimit

    配置安装目录下的 conf/limits.conf 文件,修改后需重启服务才能生效。

    1. core_file_size=0
    2. data_seg_size=-1
    3. file_size=-1
    4. virtual_memory=-1
    5. open_files=60000
    • 配置描述:

    配置项描述默认值core_file_size出现故障时产生 core 文件,用于故障诊断,生产系统建议关闭。0data_seg_size进程所允许分配的数据段大小。-1(表示unlimited)file_size进程所允许寻址的文件大小。-1(表示unlimited)virtual_memory进程所允许最大虚拟内存寻址空间限制。-1(表示unlimited)open_files进程允许的最大文件句柄数。60000

    Note:

    • conf/limits.conf 只能配置以上5个参数,其他 ulimit 值,如最大进程数,由当前 Linux Shell 中的 ulimit 值决定。
    • service sdbcm sdbcm、bin/sdbcmart、bin/sdbstart 启动节点和 sdbcm 时,均会引用该配置文件中的配置。
    • 如果不想使用 conf/limits.conf 中的配置,可使用 -i 参数:bin/sdbcmart -i ; bin/sdbstart -i 。
    • 创建节点时,新节点的 ulimit 值跟随 sdbcm 进程的 ulimit 值 。
    • 常见错误:

    非 root 用户设置 ulimit 时,一般情况下,不允许突破 hard limit 的限制。

    如果 conf/limits.conf 配置的值大于当前用户的 hard limit,则会报错。这时需提高 hard limit,或者使用 -i 参数。

    1. $ ./bin/sdbstart -p 11810
    2. Error: Failed to set ulimit[open files] to [60000]
    3. Error: start sequoiadb will set ulimit by file[conf/limits.conf], if you want to set ulimit by current terminal, please use parameter '-i'.
    4. $
    5. $ # hard limit 值为1024,大于设置的60000
    6. $ ulimit -Hn
    7. 1024

    查看ulimit

    查看数据库进程的ulimit

    1. $ cd /opt/sequoiadb
    2. $
    3. $ ./bin/sdblist
    4. sequoiadb(11800) (20111) C
    5. sequoiadb(11830) (20129) D
    6. sequoiadb(11810) (20132) S
    7. $
    8. $ # 查看协调节点进程20132的ulimit信息
    9. $ cat /proc/20132/limits
    10. Limit Soft Limit Hard Limit Units
    11. Max cpu time unlimited unlimited seconds
    12. Max file size unlimited unlimited bytes
    13. Max data size unlimited unlimited bytes
    14. Max stack size 8388608 unlimited bytes
    15. Max core file size 0 0 bytes
    16. Max resident set unlimited unlimited bytes
    17. Max processes 23711 23711 processes
    18. Max open files 60000 60000 files
    19. Max locked memory 65536 65536 bytes
    20. Max address space unlimited unlimited bytes
    21. Max file locks unlimited unlimited locks
    22. Max pending signals 23711 23711 signals
    23. Max msgqueue size 819200 819200 bytes
    24. Max nice priority 0 0
    25. Max realtime priority 0 0
    26. Max realtime timeout unlimited unlimited us

    也可通过节点健康检测快照查询各个节点的ulimit信息

    1. > db=new Sdb( 'localhost: 11810' )
    2. > db.snapshot( SDB_SNAP_HEALTH )
    3. {
    4. ...
    5. "Ulimit": {
    6. "CoreFileSize": -1,
    7. "VirtualMemory": -1,
    8. "OpenFiles": 1024,
    9. "NumProc": 23948,
    10. "FileSize": -1
    11. }
    12. ...
    13. }
    14. ...