集装箱注意事项¶
java Web容器,例如 Tomcat 或 Jetty 配置允许快速启动,但并不总是提供最佳性能。
优化您的JVM¶
在Java虚拟机(JVM)中为容器设置以下性能设置。这些设置不特定于任何容器。
Option |
Description |
|
通过从一个更大的堆开始,geoserver将不需要在重载期间暂停并向操作系统请求更多的内存。设置 |
|
定义了从操作系统请求多堆内存Java的上限(如果内存过多,请使用更多)。默认情况下,JVM将使用可用系统内存的1/4。设置 |
|
增加geoserver中“软引用”的寿命。geoserver使用软引用来缓存数据存储、空间引用系统和其他数据结构。通过将此值增加到 |
|
这个垃圾收集器 pauses the application while using several threads to recover memory 。如果您的Geoserver负载较轻,并且可以容忍暂停以清理内存,则建议使用此工具。 |
|
允许使用并发标记扫描(CMS)垃圾收集器 在应用程序运行时使用多个线程恢复内存 .建议用于连续使用的geoserver,堆大小小于6GB。 |
|
自Java 9以来的默认垃圾回收器。允许使用 Garbage First Garbage Collector (G1) 使用 应用程序运行时扫描内存的后台线程 在清理之前。建议用于6GB或更大连续负载和堆大小的geoserver。另外,你可以尝试 |
有关JVM配置的更多信息,请参阅本文 Performance tuning garbage collection in Java 和 The 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 。
取消对以下内容的注释
<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> -->
取消对以下内容的注释
<filter-mapping>
:<filter-mapping> <filter-name>cross-origin</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
重新启动
为Jetty/二进制安装程序启用CORS¶
Geoserver的独立发行版包括Jetty应用服务器。使用以下步骤为Jetty启用CORS,有关其作用和其他选项的详细信息,请参阅 Jetty Cross Origin Filter documentation
取消对以下内容的注释
<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> -->
取消对以下内容的注释
<filter-mapping>
:<!-- Uncomment following filter-mapping to enable CORS <filter-mapping> <filter-name>cross-origin</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> -->
重新启动