ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

信创环境部署SuperMap GIS:国产化适配与避坑实战

信创环境部署SuperMap GIS:国产化适配与避坑实战 1. 为什么要在信创环境里部署 SuperMap GIS1.1 信创环境的本质是什么先把概念掰扯清楚。信创全称是信息技术应用创新说人话就是从芯片、操作系统、数据库、中间件到应用软件整条链路尽量换用国产化方案。它不是简单地把 Windows 换成 Linux 那么简单而是底层架构可能都不一样——CPU 从 x86 换成 ARM、LoongArch、SW64操作系统从 CentOS/Ubuntu 换成麒麟、统信 UOS数据库从 Oracle 换成达梦、人大金仓、openGauss。这套组合拳打下来带来的直接后果就是以前在 x86 Windows Oracle 上跑得好好的 GIS 平台到了信创环境可能会遇到各种水土不服。SuperMap GIS 平台软件作为国内 GIS 基础平台的主力选手在信创适配这块做得算是比较早也比较深的但适配归适配实际部署时该踩的坑一个都不会少。1.2 SuperMap 在信创体系里的角色SuperMap GIS 平台软件包含的东西不少核心是SuperMap iServer服务端、SuperMap iDesktopX桌面端、SuperMap iClient客户端 SDK这几大件。在信创场景下最常被部署的是 iServer因为它承担着地图服务发布、空间分析、数据服务等核心业务能力是整个 GIS 应用的地基。iServer 11i 这一代产品对信创环境的支持已经相当完整了官方有专门的兼容性列表覆盖了主流的国产 CPU、操作系统、数据库和中间件。但支持和部署顺利之间还有一段距离这段距离就是我这篇内容要填的。1.3 哪些人需要看这些内容如果你是以下几类角色这篇内容大概率能帮你省下不少时间GIS 运维工程师需要在国产化服务器上从零搭建 SuperMap 环境系统集成商的技术负责人项目要求全国产化需要评估部署可行性和工作量二次开发工程师本地开发环境是 Windows但生产环境要上信创服务器需要提前避坑技术决策者需要了解信创部署的复杂度、时间成本和关键风险点我会按照实际部署的顺序把环境确认、依赖安装、部署配置、服务启动、数据源适配、性能调优这几个阶段中反复出现的问题用 QA 的形式一个一个拆开讲。每个问题都来自真实操作现场不是从文档里抄的。2. 部署前的环境确认与依赖准备2.1 怎么确认当前环境是否在官方兼容列表里这是动手之前最该做的一件事但偏偏很多人跳过。SuperMap 官网有信创兼容性查询页面输入你的 CPU 架构、操作系统版本、数据库类型能直接查到是否支持以及支持的版本号范围。我见过最常见的翻车场景是操作系统版本太新。比如麒麟 V10 SP3 刚出的时候iServer 11i 的某个早期小版本就不在列表里硬装也能装但启动时 JVM 会报奇怪的信号错误排查半天才发现是 glibc 版本不匹配。注意兼容列表一定要以你手上那个 iServer 小版本号对应的文档为准不能拿 11i 的大版本文档去套 11i SP1 的环境。版本号差一位依赖库可能就差出一截。2.2 国产 CPU 架构下 JDK 怎么选SuperMap iServer 是 Java 应用JDK 是命根子。信创环境下的 CPU 架构决定了你必须用对应架构的 JDKCPU 架构典型代表JDK 选择建议x86_64海光、兆芯标准 OpenJDK 或麒麟自带 JDKaarch64鲲鹏、飞腾华为毕昇 JDK 或 OpenJDK aarch64 版LoongArch龙芯 3A5000/3C5000龙芯官方 JDK 或 OpenJDK LoongArch 移植版SW64申威申威官方 JDK选 JDK 版本时iServer 11i 官方推荐 JDK 8 或 JDK 11。我的经验是优先用操作系统自带的 JDK因为它是经过发行版验证的和系统库的兼容性最好。如果自带版本太低再去考虑毕昇 JDK 这类经过国产化验证的发行版。实操心得装完 JDK 后务必用java -version和java -XshowSettings:properties -version 21 | grep -i arch确认架构信息。曾经遇到过一次在鲲鹏服务器上误装了 x86 的 JDKiServer 启动直接报 cannot execute binary file浪费了半小时。2.3 操作系统层面的依赖包怎么补齐国产操作系统通常是最小化安装缺一堆图形库和字体库。iServer 虽然主要是服务端但它的地图渲染、瓦片切图模块依赖一些本地库。部署前建议先跑一遍依赖检查# 检查关键依赖是否齐全 ldd /path/to/supermap-iserver/bin/*.so | grep not found # 常见缺失的包麒麟/统信 # libXext, libXrender, libXtst, fontconfig, freetype如果用的是麒麟 V10可以用yum provides反查缺失的 .so 属于哪个包然后从系统镜像里装。统信 UOS 类似用apt-file search。注意不要随便从网上找 .so 文件手动丢进去信创环境对库文件的来源和签名有要求而且版本不匹配可能导致更诡异的问题。老老实实用系统包管理器装。2.4 数据库和中间件的适配准备SuperMap iServer 支持多种数据库作为数据源信创环境下常用的是达梦、人大金仓、openGauss。部署前需要确认数据库的 JDBC 驱动版本是否与 iServer 内置的驱动兼容数据库字符集是否设置为 UTF-8中文乱码的高发区数据库是否开启了空间扩展模块如果是达梦还需要注意一个细节达梦默认的COMPATIBLE_MODE参数可能影响 SQL 语法兼容性SuperMap 的某些空间查询语句需要特定的兼容模式。这个参数在部署后再改需要重启数据库最好在初始化实例时就设好。3. SuperMap iServer 在信创环境下的部署实操3.1 部署包怎么选、怎么传SuperMap 官网下载 iServer 时要选Linux 版不要选 Windows 版。Linux 版一般是 tar.gz 格式解压即用。但信创环境下还有一个隐藏选项部分国产操作系统厂商会提供适配过的 iServer 安装包如果你能从操作系统厂商的软件源里拿到优先用那个。传输部署包到服务器时如果服务器在内网用scp或rsync即可。注意 tar.gz 包在传输后要校验 MD5我遇到过因为传输中断导致解压报错的情况重新传一遍就好了。# 校验完整性 md5sum supermap-iserver-11i-linux.tar.gz # 对比官网提供的 MD5 值 # 解压 tar -zxvf supermap-iserver-11i-linux.tar.gz -C /opt/3.2 目录规划和权限设置不要图省事直接用 root 跑 iServer。建议单独建一个用户useradd -m -s /bin/bash supermap chown -R supermap:supermap /opt/supermap-iserver-11i目录规划上我习惯把 iServer 安装目录和数据目录分开安装目录/opt/supermap-iserver-11i数据目录/data/supermap/data日志目录/data/supermap/logs临时目录/data/supermap/temp分开的好处是后续升级 iServer 版本时数据目录不用动直接换安装目录就行。而且日志和数据放在独立分区避免日志写满根分区导致系统卡死。3.3 启动参数怎么调iServer 的启动脚本是bin/startup.sh里面会读bin/setenv.sh的配置。在信创环境下有几个 JVM 参数需要特别关注# setenv.sh 中的关键配置 JAVA_OPTS-Xms4096m -Xmx8192m JAVA_OPTS$JAVA_OPTS -XX:MetaspaceSize256m -XX:MaxMetaspaceSize512m JAVA_OPTS$JAVA_OPTS -Djava.awt.headlesstrue JAVA_OPTS$JAVA_OPTS -Dfile.encodingUTF-8-Djava.awt.headlesstrue这一条在信创环境下特别重要。国产服务器通常没有图形界面如果 iServer 的某个模块尝试调用 AWT 图形库没有这个参数会直接抛异常。-Xmx的大小要根据服务器物理内存来定一般不超过物理内存的 60%。比如 16G 内存的服务器给 iServer 分 8G 堆内存比较合适剩下的留给操作系统缓存和其他进程。实操心得调整-Xmx后一定要观察一段时间 GC 日志。信创 CPU 的单核性能可能不如同代 x86GC 停顿时间会偏长。如果发现 Full GC 频繁可以考虑换用 G1 垃圾回收器-XX:UseG1GC -XX:MaxGCPauseMillis200。3.4 服务启动与验证启动命令cd /opt/supermap-iserver-11i/bin ./startup.sh启动后看日志tail -f /data/supermap/logs/iserver.log看到 iServer started successfully 之类的字样才算启动成功。然后在浏览器访问http://服务器IP:8090/iserver能看到登录页就说明服务正常。如果启动卡住或者报错最常见的原因有三个端口被占用、JDK 架构不对、依赖库缺失。排查顺序也是这个顺序。4. 信创环境特有的适配问题与解决4.1 国产数据库连接失败怎么排查这是信创部署里最高频的问题。iServer 连达梦/金仓/openGauss 时报错信息往往很模糊比如 Connection refused 或 Unknown database type。排查步骤我总结成一张表现象可能原因解决方向Connection refused数据库未启动或端口不对netstat -tlnp确认端口监听Unknown database typeJDBC 驱动未加载检查驱动 jar 是否在lib目录认证失败用户名密码或权限问题用数据库客户端先验证连接连接超时防火墙或网络策略检查 iptables/firewalld 规则中文乱码字符集不匹配确认数据库和 JDBC 都用 UTF-8驱动加载的问题特别常见。SuperMap 的lib目录下有一些内置驱动但国产数据库的驱动版本更新快建议把数据库厂商提供的最新 JDBC 驱动放进去然后重启 iServer。4.2 地图服务发布后瓦片切不出来在信创环境下切瓦片经常遇到切图任务卡在某个比例尺不动或者切出来的瓦片是纯色块。这通常和字体有关。SuperMap 切图时需要在瓦片上加标注文字如果服务器上没有中文字体标注就渲染不出来。国产操作系统自带的字体集可能不全需要手动补充# 查看系统已有字体 fc-list :langzh # 如果字体很少从 Windows 或字体包复制 # 把 .ttf 文件放到 /usr/share/fonts/ 下 fc-cache -fv注意字体文件的选择要注意授权问题不要随便商用字体。文泉驿、思源黑体这类开源字体是比较稳妥的选择。另一个可能是 JVM 的java.awt.headless没有设成 true导致字体渲染模块初始化失败。4.3 服务运行一段时间后无响应这个问题的表现形式是iServer 跑几个小时或几天后接口响应越来越慢最后完全无响应。看日志没有明显报错。信创环境下这个问题大概率是内存泄漏或本地库的线程问题。国产 CPU 架构下某些 JNI 调用的本地库可能存在兼容性问题。排查方法用jstat -gcutil pid 1000观察 GC 情况看老年代是否持续增长用jstack pid抓线程快照看是否有大量线程阻塞用top -H -p pid看哪个线程占 CPU 高如果确认是内存泄漏先升级到 iServer 的最新补丁版本很多兼容性问题官方已经在补丁里修了。如果升级后仍有问题可以配置 iServer 的定时重启策略作为临时缓解。4.4 中间件适配的坑如果项目要求用国产中间件如东方通 TongWeb、宝兰德 BESiServer 的部署方式会有所不同。不是直接startup.sh而是把 iServer 的 war 包部署到中间件里。这里最容易出问题的是类加载冲突。中间件自带的某些库和 iServer 自带的库版本不一致会导致NoSuchMethodError或ClassNotFoundException。解决办法是在中间件配置里设置类加载委托顺序让 iServer 的库优先加载。具体配置方式每个中间件不一样东方通是在tongweb.xml里改宝兰德是在bes.xml里改。核心思路都是把 iServer 的类加载器设为优先。5. 部署后的性能调优与稳定性保障5.1 针对国产 CPU 的 JVM 调优策略国产 CPU 的微架构和 x86 有差异JVM 的默认参数不一定最优。基于我在鲲鹏和飞腾上的实测经验以下调整通常有效增大年轻代比例国产 CPU 单核性能偏弱对象分配速率相对低但 GC 线程的并行效率也可能低。适当增大年轻代可以减少 Minor GC 频率。启用大页内存如果操作系统支持配置 HugePages 可以减轻 TLB 压力。避免使用偏向锁在高并发场景下偏向锁的撤销开销在国产 CPU 上可能更明显可以考虑-XX:-UseBiasedLocking。调优不是一蹴而就的建议先跑基准测试记录吞吐量和响应时间再逐项调整参数对比效果。5.2 国产操作系统的内核参数调整麒麟和统信 UOS 的默认内核参数偏保守对于 GIS 服务这种需要大量网络连接和文件句柄的应用需要调整# /etc/sysctl.conf 中增加 net.core.somaxconn 65535 net.ipv4.tcp_max_syn_backlog 65535 fs.file-max 655350 vm.swappiness 10vm.swappiness调到 10 是为了尽量减少内存交换GIS 服务对延迟敏感一旦发生 swap响应时间会飙升。文件句柄数也要在 systemd 服务配置或 limits.conf 里调大否则并发请求一多就会报 Too many open files。5.3 监控与告警怎么搭信创环境下的监控方案如果项目要求全国产化可以用 Prometheus Grafana 这套开源组合它们本身不涉及信创限制配合 node_exporter 采集系统指标JMX Exporter 采集 iServer 的 JVM 指标。关键监控项监控项阈值建议说明JVM 老年代使用率 80% 告警内存泄漏的早期信号Full GC 次数 5 次/小时频繁 Full GC 影响响应接口平均响应时间 2s 告警用户体验分水岭线程池活跃线程数 80% 告警可能线程池耗尽磁盘使用率 85% 告警瓦片和日志占空间实操心得iServer 的日志里其实有很多有用的性能信息可以写个脚本定期解析把关键指标推到监控系统。比单纯看系统指标更贴近业务。5.4 备份与恢复策略信创环境下的备份除了常规的数据备份还要注意配置文件的备份。iServer 的很多配置是在WEB-INF下的 XML 文件里升级或迁移时这些文件很关键。我的习惯是每次修改配置后把WEB-INF目录打包备份一份加上时间戳。数据目录用rsync做增量备份每天一次。如果数据量特别大可以考虑用数据库自带的备份工具做逻辑备份。恢复演练也很重要。我见过太多团队备份做了但从来没恢复过真出事的时候发现备份文件是坏的或者恢复步骤不对。建议至少每季度做一次恢复演练。6. 那些文档里不会写的避坑经验6.1 时间同步问题导致的诡异故障信创服务器如果在内网可能没有配置 NTP。服务器时间不同步会导致什么iServer 的集群节点之间心跳超时、许可证校验失败、日志时间错乱导致排查困难。这个坑我踩过两台服务器时间差了 5 分钟iServer 集群一直报节点离线排查了一下午才发现是时间问题。部署前务必确认所有节点的时间同步。6.2 国产浏览器访问控制台白屏iServer 的管理控制台在某些国产浏览器如奇安信、红莲花上可能白屏。这通常是浏览器内核版本太旧不支持某些前端语法。解决办法是用 Chrome 或 Firefox 访问管理控制台或者升级浏览器版本。如果项目要求必须用国产浏览器联系 SuperMap 技术支持要兼容性补丁。6.3 许可证文件的那些事信创环境下的许可证文件通常是绑定硬件信息的。如果换了服务器或者改了网卡许可证可能失效。建议在部署前就确认好许可证的类型和绑定方式。如果是软许可注意备份许可文件如果是硬件加密狗注意国产服务器的 USB 接口兼容性。6.4 跨平台迁移的数据源问题从 Windows 开发环境迁移到 Linux 信创环境时数据源路径会变。Windows 下的C:\data\map.udbx到 Linux 下要改成/data/map.udbx。iServer 的工作空间文件里保存的是绝对路径迁移后需要重新指定数据源路径。批量修改可以用 SuperMap iDesktopX 的数据源重新指定功能或者直接改工作空间 XML 里的路径有风险建议先备份。7. 写在最后的一些个人体会信创环境部署 SuperMap GIS 这件事说难不难说简单也不简单。难的不是技术本身而是环境的不确定性和文档的滞后性。同样的操作步骤在 A 服务器上顺利跑通到 B 服务器上可能就卡在某个依赖上。我的建议是把每一次部署都当成一次新的探索不要假设上次能行这次也能行。部署前花 30 分钟做环境检查比部署后花 3 小时排查问题划算得多。另外SuperMap 的技术支持响应速度在国产 GIS 厂商里算是不错的遇到实在搞不定的兼容性问题直接提工单比自己在网上瞎找效率高。提工单时把环境信息、日志、复现步骤整理清楚能大大加快问题定位速度。最后说一个我自己的习惯每完成一次信创部署都会写一份部署记录记录环境信息、遇到的问题、解决办法和耗时。这份记录在下一次部署时就是最好的参考手册比任何官方文档都贴近实际。
返回列表