1. 为什么要在信创环境里部署 SuperMap GIS
1.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,但生产环境要上信创服务器,需要提前避坑
- 技术决策者:需要了解信创部署的复杂度、时间成本和关键风险点
我会按照实际部署的顺序,把环境确认、依赖安装、部署配置、服务启动、数据源适配、性能调优这几个阶段中反复出现的问题,用 Q&A 的形式一个一个拆开讲。每个问题都来自真实操作现场,不是从文档里抄的。
2. 部署前的环境确认与依赖准备
2.1 怎么确认当前环境是否在官方兼容列表里
这是动手之前最该做的一件事,但偏偏很多人跳过。SuperMap 官网有信创兼容性查询页面,输入你的 CPU 架构、操作系统版本、数据库类型,能直接查到是否支持以及支持的版本号范围。
我见过最常见的翻车场景是:操作系统版本太新。比如麒麟 V10 SP3 刚出的时候,iServer 11i 的某个早期小版本就不在列表里,硬装也能装,但启动时 JVM 会报奇怪的信号错误,排查半天才发现是 glibc 版本不匹配。
注意:兼容列表一定要以你手上那个 iServer 小版本号对应的文档为准,不能拿 11i 的大版本文档去套 11i SP1 的环境。版本号差一位,依赖库可能就差出一截。
2.2 国产 CPU 架构下 JDK 怎么选
SuperMap iServer 是 Java 应用,JDK 是命根子。信创环境下的 CPU 架构决定了你必须用对应架构的 JDK:
| CPU 架构 | 典型代表 | JDK 选择建议 |
|---|---|---|
| x86_64 | 海光、兆芯 | 标准 OpenJDK 或麒麟自带 JDK |
| aarch64 | 鲲鹏、飞腾 | 华为毕昇 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 2>&1 | grep -i arch确认架构信息。曾经遇到过一次,在鲲鹏服务器上误装了 x86 的 JDK,iServer 启动直接报 "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:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m" JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true" JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"-Djava.awt.headless=true这一条在信创环境下特别重要。国产服务器通常没有图形界面,如果 iServer 的某个模块尝试调用 AWT 图形库,没有这个参数会直接抛异常。
-Xmx的大小要根据服务器物理内存来定,一般不超过物理内存的 60%。比如 16G 内存的服务器,给 iServer 分 8G 堆内存比较合适,剩下的留给操作系统缓存和其他进程。
实操心得:调整
-Xmx后一定要观察一段时间 GC 日志。信创 CPU 的单核性能可能不如同代 x86,GC 停顿时间会偏长。如果发现 Full GC 频繁,可以考虑换用 G1 垃圾回收器:-XX:+UseG1GC -XX:MaxGCPauseMillis=200。
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 type | JDBC 驱动未加载 | 检查驱动 jar 是否在lib目录 |
| 认证失败 | 用户名密码或权限问题 | 用数据库客户端先验证连接 |
| 连接超时 | 防火墙或网络策略 | 检查 iptables/firewalld 规则 |
| 中文乱码 | 字符集不匹配 | 确认数据库和 JDBC 都用 UTF-8 |
驱动加载的问题特别常见。SuperMap 的lib目录下有一些内置驱动,但国产数据库的驱动版本更新快,建议把数据库厂商提供的最新 JDBC 驱动放进去,然后重启 iServer。
4.2 地图服务发布后瓦片切不出来
在信创环境下切瓦片,经常遇到切图任务卡在某个比例尺不动,或者切出来的瓦片是纯色块。这通常和字体有关。
SuperMap 切图时需要在瓦片上加标注文字,如果服务器上没有中文字体,标注就渲染不出来。国产操作系统自带的字体集可能不全,需要手动补充:
# 查看系统已有字体 fc-list :lang=zh # 如果字体很少,从 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、宝兰德 BES),iServer 的部署方式会有所不同。不是直接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 厂商里算是不错的,遇到实在搞不定的兼容性问题,直接提工单比自己在网上瞎找效率高。提工单时把环境信息、日志、复现步骤整理清楚,能大大加快问题定位速度。
最后说一个我自己的习惯:每完成一次信创部署,都会写一份部署记录,记录环境信息、遇到的问题、解决办法和耗时。这份记录在下一次部署时就是最好的参考手册,比任何官方文档都贴近实际。