ArcGIS Server 10.0性能优化完整方案:从操作系统到数据库全面调优

2024-08-16 李腾 114 次阅读 0 次点赞
本文针对ArcGIS Server 10.0在处理大规模空间数据时出现的性能瓶颈,提供了从硬件配置、操作系统设置、Oracle数据库参数调整、ArcSDE配置优化到ArcGIS Server服务调优的完整解决方案。通过具体的操作步骤和参数配置指导,帮助用户显著提升地图服务的渲染效率和系统稳定性,适用于ArcGIS 10.0至10.8版本的性能优化参考。

当管线和管点数据大于10万时,ArcGIS Server 10.0 MapServer渲染图片会比较慢。通过操作系统、数据库、ArcSDE、ArcGIS Server等多方面的优化,ArcGIS Server出图效率会极大提高。本文以ArcGIS Server 10.0为例进行优化,但是这些优化对ArcGIS 10.0~~10.8都有重要的参考意义。

硬件

这是我们需要优化的电脑配置,CPU主频比较慢,无L1缓存。

1、CPU:2.10GHz 32核 L1缓存:无

2、内存:32GB

3、显卡:无

4、操作系统:Windows Server 2016 Datacenter

5、Oracle版本:Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod(32位)

6、ArcSDE版本:10.0.0 for Oracle10g Build 685 Fri May 14 12:05:43 2010 (RELEASE:100001 SDESVR_REL_LOW:93001)

操作系统

1、Windows设置、系统、电源和睡眠、其他电源设置,改为高性能。

ScreenShot_2025-10-28_081532_213.png

2、此电脑、属性、高级系统设置、高级、性能设置、高级、处理器计划,改为后台服务。注意:这一步会让桌面软件启动和运行变慢,如果你在服务器上使用ArcCatalog和ArcMap的话最好不要设置。

ScreenShot_2025-10-28_081802_204.png

Oracle数据库

1、如果使用的是32位的Oracle 10g,请尽量更换为64位的Oracle 10g。

2、任务管理器、详细信息,找到oracle.exe,右键,设置优先级、高。

ScreenShot_2025-10-28_082213_853.png

3、打开命令行,输入sqlplus,使用数据库管理员账号登录,修改Oracle系统参数。注意:32位Oracle SGA_MAX_SIZE和SGA_TARGET设置的值不能大于3G,否则会导致Oracle无法启动。

sqlplus
用户名:sys as sysdba
密码:password
SQL> SHOW PARAMETERS;
SQL> ALTER SYSTEM SET SESSION_CACHED_CURSORS = 100 SCOPE=SPFILE;
SQL> ALTER SYSTEM SET OPEN_CURSORS = 2000;
SQL> ALTER SYSTEM SET SHARED_POOL_SIZE = 248M;
SQL> ALTER SYSTEM SET SGA_MAX_SIZE = 3192M SCOPE=SPFILE;
SQL> ALTER SYSTEM SET SGA_TARGET = 3192M SCOPE=SPFILE;
SQL> shutdown immediate;
SQL> startup;
SQL> ALTER SYSTEM SET DB_CACHE_SIZE = 1600M;
SQL> ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 2048M;
SQL> shutdown immediate;
SQL> startup;

ArcGIS SDE

1、任务管理器、详细信息,找到gsrvr.exe,右键,设置优先级、高。

2、查询AreSDE版本,得到:10.0.0 for Oracle10g Build 685 Fri May 14 12:05:43 2010 (RELEASE:100001 SDESVR_REL_LOW:93001)。

select * from sde.version;

3、查看SDE日志文件,显示大量错误。日志文件位置:D:\Program Files (x86)\ArcGIS\ArcSDE\ora10gexe\etc\sde_esri_sde.log

db_array_fetch_spix_recs OCI Fetch Error (904)
load_buffer error -51 on GASVILLAGE, rowid -1 

4、打开命令行,在命令行中输入以下代码,将SDE中的TCP/IP Keepalive on Connections设置为ON命令,输入数据库密码,再输入Y即可。

sdemon -o info -I config
sdeconfig -o alter -v TCPKEEPALIVE=ON -u SDE

5、打开命令行,执行以下代码,使用sqlplus扩大SDE使用的表空间。

sqlplus
用户名:sys as sysdba
密码:password

SQL> SELECT TABLESPACE_NAME, FILE_NAME, BYTES/1024/1024 AS SIZE_MB, AUTOEXTENSIBLE, MAXBYTES/1024/1024 AS MAX_SIZE_MB FROM DBA_DATA_FILES WHERE TABLESPACE_NAME = 'SDE';

SQL> ALTER DATABASE DATAFILE 'D:\SDE.DBF' RESIZE 8192M;

SQL> ALTER DATABASE DATAFILE 'D:\SDE.DBF' AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;

6、执行以下代码,扩大SDE使用的临时表空间。

SQL> select property_name,property_value from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';

SQL> SELECT D.TABLESPACE_NAME,SPACE "SUM_SPACE(M)",BLOCKS SUM_BLOCKS, USED_SPACE "USED_SPACE(M)",ROUND(NVL(USED_SPACE,0)/SPACE*100,2) "USED_RATE(%)", NVL(FREE_SPACE,0) "FREE_SPACE(M)" FROM (SELECT TABLESPACE_NAME,ROUND(SUM(BYTES)/(1024*1024),2) SPACE,SUM(BLOCKS) BLOCKS FROM DBA_TEMP_FILES GROUP BY TABLESPACE_NAME) D, (SELECT TABLESPACE_NAME,ROUND(SUM(BYTES_USED)/(1024*1024),2) USED_SPACE,ROUND(SUM(BYTES_FREE)/(1024*1024),2) FREE_SPACE FROM V$TEMP_SPACE_HEADER GROUP BY TABLESPACE_NAME) F WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+);

SQL> ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\TEMP.DBF' SIZE 1024M;

SQL> exit;

7、重启ArcSDE服务。

ArcGIS Catalog

1、打开ArcToolbox、数据管理工具、索引、添加空间索引,给用到的SDE表添加空间索引。

ScreenShot_2025-10-28_104024_596.png

2、打开ArcToolbox、数据管理工具、索引、添加属性索引,给用到的SDE表需要查询的字段添加属性索引。

ScreenShot_2025-10-28_104600_739.png

3、在目录树中打开GIS服务器,暂停每个GIS服务,右键,服务属性。将参数选项卡中的服务器返回的最大记录数改为5000000;如果用到属性编辑,勾选服务能力中的Feature Access;池化选项卡中,最大实例数改为4;进程选项卡中勾选定期检查并修复空闲实例的数据连接。然后点击确定,启动服务。

ScreenShot_2025-10-28_105341_858.png

ScreenShot_2025-10-28_105351_314.png

4、在浏览器中访问:http://localhost:8399/arcgis/rest/admin,输入用户名密码,点击Clear Cache,清空ArcGIS Server缓存。

ScreenShot_2025-10-28_110727_897.png

ArcGIS Map

以下内容主要是优化ArcGIS Map的功能,减小编辑管线时的卡顿问题。设置要素显示层级和解决影响性能的因素可以提高ArcGIS Server性能。

1、删除ArcToolbox缓存:C:\Users\Administrator\AppData\Roaming\ESRI\Desktop10.0\ArcToolbox\ArcToolbox.dat

2、点击菜单自定义、ArcMap选项,显示缓存,点击清除缓存。

ScreenShot_2025-10-28_112234_274.png

3、双击D:\Program Files (x86)\ArcGIS\Desktop10.0\Bin\JavaConfigTool.exe,修改参数后保存。

ScreenShot_2025-10-28_112426_707.png

Minimum heap size(-Xms):256MB
Maximum heap size(-Xmx):4096MB
Thread stack size(-Xss):1024MB

4、打开每个XMD文档,在内容列表中,右键图层、属性、要素缓存,勾选在当前地图范围更改时自动构建缓存。

5、查看数据框和每个图层的坐标系,保证坐标系是一样的。

6、右键每个图层,属性,常规,设置缩小超过以下比例时,不显示图层。

比例尺最小显示层级适合要素
不设置任何层级高压管线、场站、气源等所有层级都要显示的要素
1:100020地图展示层级是1~18,设置比例尺1:1000,任何图层都不显示,请勿设置。
1:1000016用户等其他要素
1:2400015低压管线、阀门、弯头、三通等不太重要的要素
1:10000013中压管线、调压箱、阴保桩、村庄等重要要素
1:25000012
1:50000011
1:75000010
1:100000010
1:30000008
1:100000006

7、点击地图发布工具栏上的分析地图,解决影响性能的因素。

影响因素严重性解决方法
图层的数据源没有空间索引打开ArcToolbox窗口、数据管理工具、索引、添加空间索引,为对应图层数据表添加空间索引。
不支持要素选择右键该问题,清除要素选择。
启用“将图层透明度转换为颜色透明度”选项可改善性能中等右键该问题,选择使用颜色透明度
图层的数据源是ArcSDE,无法通过直连进行访问中等无法解决,使用gdb数据源会导致无法使用属性编辑。
图层使用粗体或斜体进行绘制的文本符号。中等右键对应图层、属性,标注选项卡,为文本去掉粗体和斜体设置。
图层将按照所有比例范围绘制右键对应图层、属性,常规选项卡,设置缩小超过下列限制时,不显示图层。

8、点击地图服务发布选项,设置抗锯齿、文本抗锯齿。点击发布到ArcGIS Server,将msd服务发布到ArcGIS Server。

ScreenShot_2025-10-28_112753_073.png

9、右键服务、停止服务、服务属性。在参数选项卡中把服务器返回的最大记录数改为50000000;在服务能力选项卡勾选Feature Access;在池化选项卡中,把最大实例数改为4;在进程选项卡中,勾选定期检查并修复空闲实例的数据库连接。保存,然后启动服务。

ArcGIS Server

1、打开Windows Defender,病毒和威胁防护,管理设置,排除项,添加以下目录。

D:\arcgisserver
C:\Users\Administrator\AppData\Roaming\ESRI\Local Caches
D:\oracle\product\10.2.0\db_1

2、编辑文件D:\Program Files (x86)\ArcGIS\Server10.0\java\manager\service\lib\manager_config.properties,修改下面一行,重启ArcGIS Server Manager服务。注意:Xms不能大于1024m,有的甚至超过512m就会使REST API无法访问。如果服务可以启动,但是REST API无法访问,需要把-Xmx改成512m,重启ArcGIS Server服务。

com.esri.arcgis.manager.applicationtomcat.jvm.options=-Xms256m -Xmx1024m -XX:MaxPermSize=512m

3、ArcGIS Server内存设置:双击D:\Program Files (x86)\ArcGIS\Server10.0\bin\JavaConfigTool.exe,设置ArcGIS Server内存。

Minimum heap size(-Xms):256MB
Maximum heap size(-Xmx):8192MB
Thread stack size(-Xss):1024MB

4、打开D:\Program Files (x86)\ArcGIS\Server10.0\server\user\cfg\服务名称.MapServer.cfg文件,设置以下参数。

MaxBufferCount:100
MaxInstances:4

常见问题

1、修改Oracle系统参数后,Oracle无法启动。

32位Oracle SGA_MAX_SIZE和SGA_TARGET设置的值不能大于3G,否则会导致Oracle无法启动。

2、使用ArcGIS Map给要素添加空间索引报错:无法添加空间索引,ERROR 000464:无法获得独占方案锁。

这个图层正被其他应用程序编辑或使用。可以使用ArcCatelog停止服务后添加。

3、修改ArcGIS Server内存后,ArcGIS Server可以启动,但是REST API服务无法访问。

ArcGIS Server 内存设置,Xms不能大于1024m,有的甚至超过512m就会使REST API无法访问。如果服务可以启动,但是REST API无法访问,需要把-Xmx改成512m,重启ArcGIS Server服务。

4、使用ArcMap设置图层比例尺后,图层不显示要素。

地图展示层级是1~~18,设置比例尺1:1000,任何图层都不显示,请检查设置的比例尺。

本文由人工编写,AI优化,转载请注明原文地址: ArcGIS Server 10.0性能优化全攻略:解决10万+数据出图慢问题

评论 (1)

登录后发表评论
晨光微晓2025-11-26 11:02:52
非常实用的优化指南!按照文中的步骤操作后,我们服务器的地图出图速度确实快了很多。感谢作者的分享!