操作系统配置


操作系统

建议Windows 版本并不能够完全满足企业级生产环境的质量要求。部署生产环境时,强烈推荐使用 Linux 操作系统作为部署环境。

目前支持的操作系统包括:

操作系统推荐版本
CentOS/Redhat7.9
Ubuntu18.04 LTS
UOSv20
Kylinv10
Windowsx86

例如,经过大量企业级环境验证的Cent OS 7.9。

JIT版本

DolphinDB JIT版本使用高版本的 gcc 编译,因此对操作系统的工具链有一定要求,GLIBC >=2.18。

  1. 检查当前操作系统glibc版本

    # ldd --version
    ldd (GNU libc) 2.28
  2. 安装glibc-2.18

    需要源码编译并安装。

    # 1 下载
    wget https://mirrors.tuna.tsinghua.edu.cn/gnu/glibc/glibc-2.18.tar.gz
    tar -zxvf  glibc-2.18.tar.gz
    
    # 2 编译
    cd glibc-2.18 
    mkdir build
    cd build/
    ../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
    make -j 8
    make install

    如果报错 configure: error: no acceptable C compiler found in $PATH 需要安装c编译器:

    yum -y install gcc

磁盘文件系统

推荐使用 xfs 文件系统类型,因为 xfs 文件系统不仅支持硬链接,还支持动态调整 inode 数量。在 DolphinDB 运行期间,若可用的 inode 不足,将导致 DolphinDB 无法写入数据,可以通过动态增加 inode 数量解决此类问题。

  1. 设置xfs文件系统

    # mkfs.xfs /dev/xxx
  2. 查看inode信息

    # xfs_info /dev/mapper/centos-home | grep imaxpct
    data = bsize=4096 blocks=10747904, imaxpct=25 # 最多25%空间可以用于存储inode
    
    # df -i | grep /dev/mapper/centos-home
    文件系统                    Inode 已用(I)  可用(I) 已用(I)% 挂载点
    /dev/mapper/centos-home 21495808       7 21495801       1% /home # 已使用1% inode
  3. 扩展inode

    通常情况下,inode是足够使用的,尤其对于 tsdb 引擎来说。oltp引擎在存储宽表的大量历史数据时,可能会遇到inode节点不足的情况,需予以扩充。如将上述 /dev/mapper/centos-home 由 25% 扩展至 30%:

    # xfs_growfs -m 30 /dev/mapper/centos-home
    meta-data=/dev/mapper/centos-home isize=512    agcount=4, agsize=2686976 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=0 spinodes=0
    data     =                       bsize=4096   blocks=10747904, imaxpct=25
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
    log      =internal               bsize=4096   blocks=5248, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    inode max percent changed from 25 to 30

内核参数

关闭swap

不建议使用 swap 作为内存不足的缓冲,因为这会降低性能。建议永久关闭系统 swap。

要永久关闭 swap,可执行以如下命令:

# echo "vm.swappiness = 0">> /etc/sysctl.conf
swapoff -a && swapon -a
sysctl -p

系统最大打开文件数

echo "fs.file-max = 1000000" >> /etc/sysctl.conf

ulimit

ulimit控制着用户进程一些使用资源,需要配置最大文件打开数 nofile, core 。

# vi /etc/security/limits.conf
* soft nofile 102400
* hard nofile 102400
* soft core ulimited

磁盘挂载

新增的磁盘需要配置自动挂载,以防在服务器重启或掉电后,未挂载而导致DolphinDB无法读写的故障。

# blkid /dev/sdb
/dev/sdb: UUID="29ecb452-6454-4288-bda9-23cebcf9c755" TYPE="xfs"
# vi /etc/fstab
UUID=29ecb452-6454-4288-bda9-23cebcf9c755 /mnt/dev1             xfs     defaults        0 0

上述命令设置 /dev/sdb 自动挂载至 /mnt/dev1。

配置core

core文件提供一些必要的诊断信息,帮助快速修复DolphinDB意外崩溃的问题。可基于一些系统core服务,如abrtd(centos),或手动配置。

abrt下的配置方法

  1. 开启abrtd服务

    # systemctl start abrtd
    # systemctl enable abrtd
    # systemctl status abrtd

    如果报错 Unit abrtd.service could not be found,需要安装yum包:

    yum install abrt-cli
  2. 配置abrtd

    修改配置文件 abrt.conf 中的 DumpLocation 选项。

    # vi /etc/abrt/abrt.conf
    DumpLocation=/data/core

    修改完成后,重启abrtd服务。

    # systemctl restart abrtd
  3. 验证core配置是否生效

    注意:以下命令只用于验证使用,切勿使用于其他场景。

    # sleep 60 &
    [1] 145778
    # kill -11 pidOfyourSleep

    检查2中配置的目录是否生成了sleep的core文件,形如 core-sleep-xxx 。

非abrt下的配置方法

  1. 设置ulimit

    依照内核参数-ulimit章节设置core选项,并检查输出是否为 ulimited。

    # ulimit
    unlimited
  2. 设置core文件存放路径

     # echo /corefile/core-%e-%p-%t > /proc/sys/kernel/core_pattern  
     # echo "kernel.core_pattern=/data/core/core-%e-%p-%t.core" >> /etc/sysctl.conf

    注意

    • 确保core目录存在,如上述的/data/core目录。
    • core目录空间充足,至少大于DolphinDB运行时使用的最大内存 maxMemSize。
  3. 验证core配置是否生效

    注意:以下命令只用于验证使用,切勿使用于其他场景。

    # sleep 60 &
    [1] 145778
    # kill -11 pidOfyourSleep

    检查2中配置的目录是否生成了sleep的core文件,形如 core-sleep-xxx 。