操作系统配置
操作系统
建议:Windows 版本并不能够完全满足企业级生产环境的质量要求。部署生产环境时,强烈推荐使用 Linux 操作系统作为部署环境。
目前支持的操作系统包括:
操作系统 | 推荐版本 |
---|---|
CentOS/Redhat | 7.9 |
Ubuntu | 18.04 LTS |
UOS | v20 |
Kylin | v10 |
Windows | x86 |
例如,经过大量企业级环境验证的Cent OS 7.9。
JIT版本
DolphinDB JIT版本使用高版本的 gcc 编译,因此对操作系统的工具链有一定要求,GLIBC >=2.18。
检查当前操作系统glibc版本
# ldd --version ldd (GNU libc) 2.28
安装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 数量解决此类问题。
设置xfs文件系统
# mkfs.xfs /dev/xxx
查看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
扩展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下的配置方法
开启abrtd服务
# systemctl start abrtd # systemctl enable abrtd # systemctl status abrtd
如果报错 Unit abrtd.service could not be found,需要安装yum包:
yum install abrt-cli
配置abrtd
修改配置文件 abrt.conf 中的 DumpLocation 选项。
# vi /etc/abrt/abrt.conf DumpLocation=/data/core
修改完成后,重启abrtd服务。
# systemctl restart abrtd
验证core配置是否生效
注意:以下命令只用于验证使用,切勿使用于其他场景。
# sleep 60 & [1] 145778 # kill -11 pidOfyourSleep
检查2中配置的目录是否生成了sleep的core文件,形如 core-sleep-xxx 。
非abrt下的配置方法
设置ulimit
依照内核参数-ulimit章节设置core选项,并检查输出是否为 ulimited。
# ulimit unlimited
设置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。
验证core配置是否生效
注意:以下命令只用于验证使用,切勿使用于其他场景。
# sleep 60 & [1] 145778 # kill -11 pidOfyourSleep
检查2中配置的目录是否生成了sleep的core文件,形如 core-sleep-xxx 。