We created a GeoServer instance within the Microsoft Azure Cloud on a scalable virtual machine set with an external storage disk mounted to a Linux (Ubuntu 16.04) file system.

System specification:

  • Ubuntu 16.04 (xenial)
  • Geoserver 2.12.0
  • Tomcat 8.04 with 4GB Memory
  • 7GB memory for the system

On this storage we moved the GeoServer data directory to another location, in order to have it available for each of the virtual machines. Right now we have about 120000 layers and each day ~4000 new layers will be create. We stored raster layers on the storage and all the vector files stored in a PostgreSQL database which is running on a virtual machine.


In case we need to restart the virtual machine or the tomcat web server on which GeoServer is deployed, the web server and GeoServer are not available anymore and we receive a time out.


Is this error due to the huge amount of data, i.e. because GeoServer needs to initialize all the layers?

Or could it be because there is an error in the configuration?

Or simply because of a wrong layer?

Error Message:

In all the log files we can not find any error message except this one:

"No Spring WebApplicationInitializer types detected on classpath"

Log file entries or any other system specs can be provided if necessary.

  • are you running multiple instances of GeoServer sharing a single data directory?
    – Ian Turton
    Jan 12, 2018 at 10:15
  • if you turn the logging level up you should see more in the log
    – Ian Turton
    Jan 12, 2018 at 10:16

1 Answer 1


On startup GeoServer loads the configuration of all layers, to be kept in memory. The process makes it load NumberOfLayers*2 files just for the layers, plus all styles, stores and whatnot.

While I cannot be sure that is the problem, it seems that GeoServer is going to take several minutes to startup in those conditions, and the situation will worsen daily.

The first question is, do you really need all those layers? 4000 new layers a day seems like a use case of adding time based information, if that is the case, switch to use a single layers with a time dimension attached instead, and extract the slice you want by specifying the desired time.

If instead they are 4000 unrelated layers a day, you can look at the unsupported "jdbcConfig" module, you'll get almost instant startup, but mind, you'll pay a performance price on each WMS requests for it: http://docs.geoserver.org/stable/en/user/community/jdbcconfig/index.html

If you go this way, I'd recommend getting a commercial support contract along with it, as nobody is supporting this module (in their spare time at least). See: http://geoserver.org/comm/

Not the answer you're looking for? Browse other questions tagged or ask your own question.