← 返回文章列表
信创 4 分钟阅读 炬鲸团队

龙芯 LoongArch + 麒麟 V10 + openGauss 部署实录

记录炬鲸 OBSERVE 在龙芯 3A5000(LoongArch)+ 银河麒麟 V10 + openGauss 下的部署与适配:自研指令集带来的二进制生态问题、openGauss 方言差异、参数调优与踩坑记录。

LoongArch 和 ARM、x86 都不一样

之前写过鲲鹏 + 麒麟 + 达梦、飞腾 + UOS + 金仓,这次是第三套组合:龙芯 3A5000 处理器、银河麒麟 V10、openGauss 数据库。龙芯最特别的是指令集——LoongArch 是龙芯自研架构,既不是 x86 也不是 ARM,这带来一个现实问题:市面上很多"国产化"二进制只出了 x86 和 aarch64 两个版本,LoongArch 版要么没有、要么滞后。信创选型时,处理器架构决定了后续所有软件的可用性,这个要在立项时就想清楚。

环境与准备

  • CPU:龙芯 3A5000(LoongArch,4 核 8 线程)或 3C5000(服务器级)
  • 操作系统:银河麒麟服务器版 V10(loongarch64)
  • 数据库:openGauss 5.0(单机版)
  • 部署:裸机 + systemd

先确认三件事:OS 是 loongarch64 而不是 mips64el(龙芯老架构,别搞混);openGauss 有 LoongArch 官方发行版;OBSERVE 提供 loongarch64 离线安装包。装之前跑 uname -m 确认是 loongarch64。

部署步骤

tar -xzf jjhub-observe-2.6-loongarch64.tar.gz
cd jjhub-observe-2.6-loongarch64
./install.sh --db opengauss --db-host 10.0.0.31 --db-port 5432

openGauss 默认端口 5432(PG 协议)。安装脚本自动建库建用户,建议用独立业务账号,不用超级用户 omm 跑业务连接。openGauss 默认开启资源池和连接数限制,业务账号要单独授权,否则连接数会被默认值卡住。

openGauss 适配要点

openGauss 基于 PostgreSQL 9.2 分支自研,大部分 PG 语法兼容,但有差异:

  • 默认不支持 pg_catalog 之外的部分扩展,元数据层要避开这些扩展;
  • 分页用 LIMIT ... OFFSET,和 PG 一致,但 openGauss 对大数据量 OFFSET 性能差,深分页要改游标或 keyset;
  • 字符集建库时显式 UTF8,openGauss 默认 locale 可能不是 UTF8,中文日志字段会乱码。

参数调优

postgresql.conf 里调整:

shared_buffers = 4GB
max_connections = 300
synchronous_commit = off

openGauss 默认 WAL 同步刷盘,采集场景写入量大,synchronous_commit = off 能显著降低写入延迟,代价是极端情况丢最后一个事务。日志采集这种"丢几条可容忍"的场景可以开,交易类业务不行。

踩坑记录

  • 龙芯 3A5000 单核性能弱于同代 x86,采集 Agent 要控制正则复杂度,复杂正则每核吞吐能差一倍;
  • 麒麟 V10 默认防火墙开着,5432 和 OBSERVE 的 8080 端口要放行,否则数据库连不上;
  • LoongArch 的二进制生态还在补,依赖库版本可能比 x86 旧,安装脚本要用系统自带库,别强制装新版;
  • 上线前务必在 LoongArch 真机上跑完整回归,x86 上测过在 LoongArch 上可能直接起不来。