Top Banner
In Production Juan Marin
24

In Production Juan Marin. Agenda Introduction Reliability Availability Performance Data optimizations Runtime optimizations Measuring your environment.

Mar 29, 2015

Download

Documents

Cedric New
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: In Production Juan Marin. Agenda Introduction Reliability Availability Performance Data optimizations Runtime optimizations Measuring your environment.

In Production

Juan Marin

Page 2: In Production Juan Marin. Agenda Introduction Reliability Availability Performance Data optimizations Runtime optimizations Measuring your environment.

Agenda• Introduction• Reliability• Availability• Performance• Data optimizations• Runtime optimizations• Measuring your environment• Monitoring your environment• Example

Page 3: In Production Juan Marin. Agenda Introduction Reliability Availability Performance Data optimizations Runtime optimizations Measuring your environment.

Introduction

• No recipes, just guidelines• Security• Criteria for the quality of a production deployment:

– Reliability– Availability– Performance

Page 4: In Production Juan Marin. Agenda Introduction Reliability Availability Performance Data optimizations Runtime optimizations Measuring your environment.

• Change default admin user!!!• Block geoserver/web, access only internally• Use roles• New security subsystem coming in 2.2

Don’t forget about security

Page 5: In Production Juan Marin. Agenda Introduction Reliability Availability Performance Data optimizations Runtime optimizations Measuring your environment.

Reliability• Disable unused services• Control server resources

– Set WMS rendering memory allocation and processing time limits

– Set WFS response size limits– Optimize WFS response types

• Limit concurrent requests– Limit available server threads to reduce concurrency– Implement control flow to queue requests and avoid

server overload

Page 6: In Production Juan Marin. Agenda Introduction Reliability Availability Performance Data optimizations Runtime optimizations Measuring your environment.

Change default logging

Page 7: In Production Juan Marin. Agenda Introduction Reliability Availability Performance Data optimizations Runtime optimizations Measuring your environment.

Avoid system overload• Use control flow plugin• Limits # of concurrent requests by:

– Service type (i.e. WMS, WFS, global)– User (cookie based, browsers)– IP address (any client)

Page 8: In Production Juan Marin. Agenda Introduction Reliability Availability Performance Data optimizations Runtime optimizations Measuring your environment.

Control Flow

Page 9: In Production Juan Marin. Agenda Introduction Reliability Availability Performance Data optimizations Runtime optimizations Measuring your environment.

Control Flow

Page 10: In Production Juan Marin. Agenda Introduction Reliability Availability Performance Data optimizations Runtime optimizations Measuring your environment.

Availability• Use mechanism to detect server unresponsiveness

and restart if necessary (i.e. watchdog)• Use load balancing across a pool of servers• Provide high availability by using redundant

hardware and software components throughout the system

Page 11: In Production Juan Marin. Agenda Introduction Reliability Availability Performance Data optimizations Runtime optimizations Measuring your environment.

Data Optimizations• Sometimes the most important thing to do!!• Prepare your maps

– Symbology that makes sense– Scale dependency

• Store vector and raster data in the most frequently requested coordinate system

Page 12: In Production Juan Marin. Agenda Introduction Reliability Availability Performance Data optimizations Runtime optimizations Measuring your environment.

High Availability ConfigurationsLoad Balancer (i.e. HAProxy)

Page 13: In Production Juan Marin. Agenda Introduction Reliability Availability Performance Data optimizations Runtime optimizations Measuring your environment.

Performance

• Optimize data and map configuration– Optimize raster and vector data storage– Don’t show too much data at once (~1000 features per

map request)

• Use most recent version of Oracle JVM– Run in server mode– Configure options for maximum performance

• Install native code extensions for JAI and Image I/O• Cluster your deployment

– Better performance under load

Page 14: In Production Juan Marin. Agenda Introduction Reliability Availability Performance Data optimizations Runtime optimizations Measuring your environment.

Data optimizations• Raster optimizations

– Use correct format (GeoTiff, BigTiff, etc.)– Use ImageMosaic– Use ImagePyramid

• Vector optimizations– Make sure proper Spatial Index is being used– Use a spatial database

• Validate connections• Use connection pooling

– Generalize features for higher zoom levels– Avoid shapefile when filtering on attributes

Page 15: In Production Juan Marin. Agenda Introduction Reliability Availability Performance Data optimizations Runtime optimizations Measuring your environment.

GeoWebCache• Cache tiles for fast map rendering• Performance is sometimes orders of magnitude

faster than regular WMS• GeoWebCache is extremely fast, with some unique

features– Integrated with GeoServer or standalone with any WMS– Can expire tiles by reading a GeoRSS feed– Seed tile cache down to a certain zoom level, dynamically

cache below that

Page 16: In Production Juan Marin. Agenda Introduction Reliability Availability Performance Data optimizations Runtime optimizations Measuring your environment.

Runtime optimizations• JVM settings for production (example)

– -server: run in server mode – -Xms2048m -Xmx2048m: maximum heap size, allocates it all at

startup– -XX:PermSize=128m -XX:MaxPermSize=256m: sets size and

maximum size of permanent collection memory. Very important since GeoServer uses a lot of classes

– -XX: SoftRefLRUPolicyMSPerMB=3600: Increases the effectiveness of datastore cache references by increasing the lifetime of “soft references”

– -XX:+UserParalleGC: enables multi-threaded garbage collection. Use with multicore systems only

– -XX:+AggressiveOpt: enables experimental optimizations that will be defaults in future versions of the JVM

Page 17: In Production Juan Marin. Agenda Introduction Reliability Availability Performance Data optimizations Runtime optimizations Measuring your environment.

Container tuning: Optimize Tomcat

• Limit number of concurrent threads in Tomcat (<CATALINA_DIR>/conf/server.xml)

• <Server port=”8005” shutdown=”SHUTDOWN”> ... <Connector port=”8080” protocol=”HTTP/1.1” ConnectionTimeout=”20000” redirectPort=”8443” maxThreads=”20” minSpareThreads=”20” /> ... </Server>

• Install Apache Portable Runtime (APR) more info here http://tomcat.apache.org/tomcat-7.0-doc/apr.html

Page 18: In Production Juan Marin. Agenda Introduction Reliability Availability Performance Data optimizations Runtime optimizations Measuring your environment.

Measuring your environmentJMeter

VisualVM

Page 19: In Production Juan Marin. Agenda Introduction Reliability Availability Performance Data optimizations Runtime optimizations Measuring your environment.

Monitoring your environment

Page 20: In Production Juan Marin. Agenda Introduction Reliability Availability Performance Data optimizations Runtime optimizations Measuring your environment.

Example• Data

– Washington DC OSM

• Software– Ubuntu 11.10– PostgreSQL 9.1.2 + Postgis 2.0– Tomcat 7.0.26– GeoServer 2.1.3– JVM: OpenJDK6, Oracle JDK6 and Oracle JDK7

• Hardware– 4 cores– 8GB RAM

Page 21: In Production Juan Marin. Agenda Introduction Reliability Availability Performance Data optimizations Runtime optimizations Measuring your environment.

Example data

Page 22: In Production Juan Marin. Agenda Introduction Reliability Availability Performance Data optimizations Runtime optimizations Measuring your environment.

Results

Page 23: In Production Juan Marin. Agenda Introduction Reliability Availability Performance Data optimizations Runtime optimizations Measuring your environment.

References• GeoServer in Production White Paper

http://opengeo.org/publications/geoserver-production/register/?target=/publications/geoserver-production/

• GeoServer on steroids http://www.slideshare.net/geosolutions/geoserver-on-steroids

Page 24: In Production Juan Marin. Agenda Introduction Reliability Availability Performance Data optimizations Runtime optimizations Measuring your environment.

Questions?

Thank You