集装箱注意事项

java Web容器,例如 TomcatJetty 配置允许快速启动,但并不总是提供最佳性能。

优化您的JVM

在Java虚拟机(JVM)中为容器设置以下性能设置。这些设置不特定于任何容器。

Option

Description

-Xms128m

通过从一个更大的堆开始,geoserver将不需要在重载期间暂停并向操作系统请求更多的内存。设置 -Xms128m 将告诉虚拟机在初始启动时获取一个128M堆内存。

-Xmx756M

定义了从操作系统请求多堆内存Java的上限(如果内存过多,请使用更多)。默认情况下,JVM将使用可用系统内存的1/4。设置 -Xms756m 将756MB内存分配给地理服务器。

-XX:SoftRefLRUPolicyMSPerMB=36000

增加geoserver中“软引用”的寿命。geoserver使用软引用来缓存数据存储、空间引用系统和其他数据结构。通过将此值增加到 36000 (36秒)这些值将在内存中保留更长时间,从而提高缓存的效率。

-XX:+UseParallelGC

这个垃圾收集器 pauses the application while using several threads to recover memory 。如果您的Geoserver负载较轻,并且可以容忍暂停以清理内存,则建议使用此工具。

-XX:+UseParNewGC

允许使用并发标记扫描(CMS)垃圾收集器 在应用程序运行时使用多个线程恢复内存 .建议用于连续使用的geoserver,堆大小小于6GB。

–XX:+UseG1GC

自Java 9以来的默认垃圾回收器。允许使用 Garbage First Garbage Collector (G1) 使用 应用程序运行时扫描内存的后台线程 在清理之前。建议用于6GB或更大连续负载和堆大小的geoserver。另外,你可以尝试 -XX:+UseStringDeduplicationJVM 要求g1更好地管理内存中的公共文本字符串。

有关JVM配置的更多信息,请参阅本文 Performance tuning garbage collection in JavaThe 4 Java Garbage Collectors .

备注

一次只能使用一个垃圾收集器。请不要在运行时组合垃圾收集器。

备注

如果您只提供矢量数据,那么您将流式传输,因此拥有更多内存不会提高性能。但是,如果要提供覆盖范围,图像处理将使用磁贴缓存并从更多内存中获益。作为管理员,您可以将可用内存的一部分配置为磁贴缓存(请参阅 Web管理界面 节)-例如使用 0.75 分配 75% 堆的数据块缓存。

备注

您可以在命令行上尝试内存设置,以在使用前检查设置/默认值。

要检查设置,请使用 java -Xms128m -Xmx756m -XX:+PrintFlagsFinal -version | grep HeapSize ::

uintx InitialHeapSize   := 134217728     {product}
uintx MaxHeapSize       := 792723456     {product}

当从字节转换时, 128 MB初始堆大小,以及 756 MB最大堆大小。

使用检查硬件的默认值 java -XX:+PrintFlagsFinal -version | grep HeapSize ::

uintx InitialHeapSize   := 268435456     {product}
uintx MaxHeapSize       := 4294967296    {product}

上面的结果(从一台16GB的笔记本电脑)相当于256M的初始堆大小,最大堆大小约为4GB(或大约是系统内存的1/4)。

使用较新的Marlin栅格化器

要使用比您的JVM提供的版本更新的Marlin,请在JVM启动选项中添加以下内容:

-Xbootclasspath/a:$MARLIN_JAR
-Dsun.java2d.renderer=org.marlin.pisces.MarlinRenderingEngine

在哪里? $MARLIN_JAR 是的位置 marlin*.jar 位于geoserver/WEB-INF/lib目录中的文件,或从 Marlin project .

服务器状态页显示正在使用哪个渲染器。

启用CORS

Enable Cross-Origin Resource Sharing (CORS) 允许您自己域之外的JavaScript应用程序或Web浏览器使用Geoserver。

为Tomcat启用CORS

使用Tomcat测试了Geoserver的Web归档分发。使用以下步骤为Tomcat启用CORS,有关其作用和其他选项的更多信息,请参阅 Tomcat CORS Filter documentation

  1. 取消对以下内容的注释 <filter> 在……里面 webapps/geoserver/WEB-INF/web.xml

       <!-- Uncomment following filter to enable CORS in Tomcat. Do not forget the second config block further down.
        <filter>
          <filter-name>cross-origin</filter-name>
          <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
          <init-param>
            <param-name>cors.allowed.origins</param-name>
            <param-value>*</param-value>
          </init-param>
          <init-param>
            <param-name>cors.allowed.methods</param-name>
            <param-value>GET,POST,PUT,DELETE,HEAD,OPTIONS</param-value>
          </init-param>
          <init-param>
            <param-name>cors.allowed.headers</param-name>
            <param-value>*</param-value>
          </init-param>
        </filter>
        -->
    
  2. 取消对以下内容的注释 <filter-mapping>

        <filter-mapping>
            <filter-name>cross-origin</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    
  3. 重新启动

为Jetty/二进制安装程序启用CORS

Geoserver的独立发行版包括Jetty应用服务器。使用以下步骤为Jetty启用CORS,有关其作用和其他选项的详细信息,请参阅 Jetty Cross Origin Filter documentation

  1. 取消对以下内容的注释 <filter> 在……里面 webapps/geoserver/WEB-INF/web.xml

       <!-- Uncomment following filter to enable CORS in Jetty. Do not forget the second config block further down.
        <filter>
          <filter-name>cross-origin</filter-name>
          <filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
          <init-param>
            <param-name>chainPreflight</param-name>
            <param-value>false</param-value>
          </init-param>
          <init-param>
            <param-name>allowedOrigins</param-name>
            <param-value>*</param-value>
          </init-param>
          <init-param>
            <param-name>allowedMethods</param-name>
            <param-value>GET,POST,PUT,DELETE,HEAD,OPTIONS</param-value>
          </init-param>
          <init-param>
            <param-name>allowedHeaders</param-name>
            <param-value>*</param-value>
          </init-param>
        </filter>
        -->
    
  2. 取消对以下内容的注释 <filter-mapping>

        <!-- Uncomment following filter-mapping to enable CORS
        <filter-mapping>
            <filter-name>cross-origin</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        -->
    
  3. 重新启动

Previous: Java考虑