[Geoserver-users] Tomcat 7 container maxThreads parameter

In the following "Geoserver in production" thread it is written that one
should set the value of maxThreads to 20:

http://boundlessgeo.com/whitepaper/geoserver-production-2/#limit

In the "GeoWebCache, Production" website it is said that the same parameter
can be even 2000.

http://geowebcache.org/docs/current/production/index.html

So if someone uses Geoserver (2.6.5) with the embedded GeoWebcache, then how
to set this parameter? (Tomcat default is 200).

In the Control flow extension's documentation, it is said that this value
should be "2 times the number of CPU cores" for Geoserver. (I guess that
sets the same parameter)

http://docs.geoserver.org/2.7.1/user/extensions/controlflow/index.html

I have a setup, where the machine has 4 cores (8 with hyperthreading), and
it should serve both cached tiles with...geoserver/wms?tiled=true... URL,
and random sized singletile WMS images, too. I would think that the best
solution would be to set the value to 2000 in tomcat/conf/server.xml, and
then use the control-flow module to set the lower value for Geoserver.

Thanks,
Ben

--
View this message in context: http://osgeo-org.1560.x6.nabble.com/Tomcat-7-container-maxThreads-parameter-tp5225666.html
Sent from the GeoServer - User mailing list archive at Nabble.com.

On Wed, Sep 23, 2015 at 1:41 PM, benedeksimo <universitas87@anonymised.com>
wrote:

In the following "Geoserver in production" thread it is written that one
should set the value of maxThreads to 20:

http://boundlessgeo.com/whitepaper/geoserver-production-2/#limit

Using a fixed number like that does not make sense, it's actually a
function of
how many cores you have, and what type of traffic you're driving.
E.g., for WMS I'd put it at 2-4 times the cpu cores, but for WFS it can
go further, and for GWC much further.

Suggestion: use control-flow instead, and leave the tomcat number to
some suitably high value (200 is a good starting point with lots of GWC
traffic it might be higher)

In the "GeoWebCache, Production" website it is said that the same parameter
can be even 2000.

http://geowebcache.org/docs/current/production/index.html

So if someone uses Geoserver (2.6.5) with the embedded GeoWebcache, then
how
to set this parameter? (Tomcat default is 200).

See above. Try to do load GWC with jmeter with increasing
number of connections and see where the thoughput tops.
That's your number for GWC

In the Control flow extension's documentation, it is said that this value
should be "2 times the number of CPU cores" for Geoserver. (I guess that
sets the same parameter)

http://docs.geoserver.org/2.7.1/user/extensions/controlflow/index.html

I have a setup, where the machine has 4 cores (8 with hyperthreading), and
it should serve both cached tiles with...geoserver/wms?tiled=true... URL,
and random sized singletile WMS images, too. I would think that the best
solution would be to set the value to 2000 in tomcat/conf/server.xml, and
then use the control-flow module to set the lower value for Geoserver.

Sounds like a good plan.

Cheers
Andrea

--

GeoServer Professional Services from the experts! Visit
http://goo.gl/it488V for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

*AVVERTENZE AI SENSI DEL D.Lgs. 196/2003*

Le informazioni contenute in questo messaggio di posta elettronica e/o
nel/i file/s allegato/i sono da considerarsi strettamente riservate. Il
loro utilizzo è consentito esclusivamente al destinatario del messaggio,
per le finalità indicate nel messaggio stesso. Qualora riceviate questo
messaggio senza esserne il destinatario, Vi preghiamo cortesemente di
darcene notizia via e-mail e di procedere alla distruzione del messaggio
stesso, cancellandolo dal Vostro sistema. Conservare il messaggio stesso,
divulgarlo anche in parte, distribuirlo ad altri soggetti, copiarlo, od
utilizzarlo per finalità diverse, costituisce comportamento contrario ai
principi dettati dal D.Lgs. 196/2003.

The information in this message and/or attachments, is intended solely for
the attention and use of the named addressee(s) and may be confidential or
proprietary in nature or covered by the provisions of privacy act
(Legislative Decree June, 30 2003, no.196 - Italy's New Data Protection
Code).Any use not in accord with its purpose, any disclosure, reproduction,
copying, distribution, or either dissemination, either whole or partial, is
strictly forbidden except previous formal approval of the named
addressee(s). If you are not the intended recipient, please contact
immediately the sender by telephone, fax or e-mail and delete the
information in this message that has been received in error. The sender
does not give any warranty or accept liability as the content, accuracy or
completeness of sent messages and accepts no responsibility for changes
made after they were sent or for other risks which arise as a result of
e-mail transmission, viruses, etc.

-------------------------------------------------------

Ok, now it seems more clear! So the Tomcat maxThreads number has to be higher than the ows.gwc parameter in controlflow.properties, right? Or it has to be more than the sum of ows.wms and ows.gwc?

And will the ows.gwc parameter affect request to the wms endpoint with tiled=true instead of the gwc endpoint?

And I also wonder if one counts with the number of CPU cores in this case, is it the phísical or the logical cores? (Sorry if this is a dumb question…)

···

2015-09-23 14:09 GMT+02:00 Andrea Aime <andrea.aime@anonymised.com>:

On Wed, Sep 23, 2015 at 1:41 PM, benedeksimo <universitas87@anonymised.com> wrote:

In the following “Geoserver in production” thread it is written that one
should set the value of maxThreads to 20:

http://boundlessgeo.com/whitepaper/geoserver-production-2/#limit

Using a fixed number like that does not make sense, it’s actually a function of
how many cores you have, and what type of traffic you’re driving.
E.g., for WMS I’d put it at 2-4 times the cpu cores, but for WFS it can
go further, and for GWC much further.

Suggestion: use control-flow instead, and leave the tomcat number to
some suitably high value (200 is a good starting point with lots of GWC
traffic it might be higher)

In the “GeoWebCache, Production” website it is said that the same parameter
can be even 2000.

http://geowebcache.org/docs/current/production/index.html

So if someone uses Geoserver (2.6.5) with the embedded GeoWebcache, then how
to set this parameter? (Tomcat default is 200).

See above. Try to do load GWC with jmeter with increasing
number of connections and see where the thoughput tops.
That’s your number for GWC

In the Control flow extension’s documentation, it is said that this value
should be “2 times the number of CPU cores” for Geoserver. (I guess that
sets the same parameter)

http://docs.geoserver.org/2.7.1/user/extensions/controlflow/index.html

I have a setup, where the machine has 4 cores (8 with hyperthreading), and
it should serve both cached tiles with…geoserver/wms?tiled=true… URL,
and random sized singletile WMS images, too. I would think that the best
solution would be to set the value to 2000 in tomcat/conf/server.xml, and
then use the control-flow module to set the lower value for Geoserver.

Sounds like a good plan.

Cheers
Andrea

==
GeoServer Professional Services from the experts! Visit
http://goo.gl/it488V for more information.

Ing. Andrea Aime

@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

AVVERTENZE AI SENSI DEL D.Lgs. 196/2003

Le informazioni contenute in questo messaggio di posta elettronica e/o nel/i file/s allegato/i sono da considerarsi strettamente riservate. Il loro utilizzo è consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora riceviate questo messaggio senza esserne il destinatario, Vi preghiamo cortesemente di darcene notizia via e-mail e di procedere alla distruzione del messaggio stesso, cancellandolo dal Vostro sistema. Conservare il messaggio stesso, divulgarlo anche in parte, distribuirlo ad altri soggetti, copiarlo, od utilizzarlo per finalità diverse, costituisce comportamento contrario ai principi dettati dal D.Lgs. 196/2003.

The information in this message and/or attachments, is intended solely for the attention and use of the named addressee(s) and may be confidential or proprietary in nature or covered by the provisions of privacy act (Legislative Decree June, 30 2003, no.196 - Italy’s New Data Protection Code).Any use not in accord with its purpose, any disclosure, reproduction, copying, distribution, or either dissemination, either whole or partial, is strictly forbidden except previous formal approval of the named addressee(s). If you are not the intended recipient, please contact immediately the sender by telephone, fax or e-mail and delete the information in this message that has been received in error. The sender does not give any warranty or accept liability as the content, accuracy or completeness of sent messages and accepts no responsibility for changes made after they were sent or for other risks which arise as a result of e-mail transmission, viruses, etc.


On Wed, Sep 23, 2015 at 2:46 PM, Simó Benedek <universitas87@anonymised.com>
wrote:

Ok, now it seems more clear! So the Tomcat maxThreads number has to be
higher than the ows.gwc parameter in controlflow.properties, right? Or it
has to be more than the sum of ows.wms and ows.gwc?

Higher than the sum I'd say.

And will the ows.gwc parameter affect request to the wms endpoint with
tiled=true instead of the gwc endpoint?

Yes and no, it's more complicated than that. If your request has tiled=true
_and_ it matches exactly, by location, format and request parameters,
a tile that can be cached by GWC, and the direct WMS integration in the GWC
config panel is enabled, then GWC takes it over and may be
limited by the GWC limits, otherwise it's a normal WMS request and it gets
handled by the WMS.
Hope this makes sense.

And oh, I did not code the GWC control flow limits myself, so the above
might be incorrect, and it might be that GWC limits kick in only
if you are using the real tile protocols (WMTS and friends).
I'm cc'ing Gabriel, maybe he knows how things actually work.

And I also wonder if one counts with the number of CPU cores in this
case, is it the phísical or the logical cores? (Sorry if this is a dumb
question...)

Not dumb, I always wonder myself. The extra cores HT give are only useful
for integer number computations, but not for float ones (as far as I know).
I don't have a good answer here, gut feelilng, I'd take the physical ones
and multiply by four.
If you want to have a "real" number instead, load test your server with
increating number of parallel requests, with no limits, and
record when you get the maximum throughput, that's likely the number you
want to set in control-flow

Cheers
Andrea

--

GeoServer Professional Services from the experts! Visit
http://goo.gl/it488V for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

*AVVERTENZE AI SENSI DEL D.Lgs. 196/2003*

Le informazioni contenute in questo messaggio di posta elettronica e/o
nel/i file/s allegato/i sono da considerarsi strettamente riservate. Il
loro utilizzo è consentito esclusivamente al destinatario del messaggio,
per le finalità indicate nel messaggio stesso. Qualora riceviate questo
messaggio senza esserne il destinatario, Vi preghiamo cortesemente di
darcene notizia via e-mail e di procedere alla distruzione del messaggio
stesso, cancellandolo dal Vostro sistema. Conservare il messaggio stesso,
divulgarlo anche in parte, distribuirlo ad altri soggetti, copiarlo, od
utilizzarlo per finalità diverse, costituisce comportamento contrario ai
principi dettati dal D.Lgs. 196/2003.

The information in this message and/or attachments, is intended solely for
the attention and use of the named addressee(s) and may be confidential or
proprietary in nature or covered by the provisions of privacy act
(Legislative Decree June, 30 2003, no.196 - Italy's New Data Protection
Code).Any use not in accord with its purpose, any disclosure, reproduction,
copying, distribution, or either dissemination, either whole or partial, is
strictly forbidden except previous formal approval of the named
addressee(s). If you are not the intended recipient, please contact
immediately the sender by telephone, fax or e-mail and delete the
information in this message that has been received in error. The sender
does not give any warranty or accept liability as the content, accuracy or
completeness of sent messages and accepts no responsibility for changes
made after they were sent or for other risks which arise as a result of
e-mail transmission, viruses, etc.

-------------------------------------------------------

Dear Gabriel,

Maybe could you say a few words about the GWC controlflow mechanism?

Thanks a lot,
Ben

···

2015-09-24 10:40 GMT+02:00 Andrea Aime <andrea.aime@…1107…>:

On Wed, Sep 23, 2015 at 2:46 PM, Simó Benedek <universitas87@anonymised.com4…> wrote:

Ok, now it seems more clear! So the Tomcat maxThreads number has to be higher than the ows.gwc parameter in controlflow.properties, right? Or it has to be more than the sum of ows.wms and ows.gwc?

Higher than the sum I’d say.

And will the ows.gwc parameter affect request to the wms endpoint with tiled=true instead of the gwc endpoint?

Yes and no, it’s more complicated than that. If your request has tiled=true and it matches exactly, by location, format and request parameters,
a tile that can be cached by GWC, and the direct WMS integration in the GWC config panel is enabled, then GWC takes it over and may be
limited by the GWC limits, otherwise it’s a normal WMS request and it gets handled by the WMS.
Hope this makes sense.

And oh, I did not code the GWC control flow limits myself, so the above might be incorrect, and it might be that GWC limits kick in only
if you are using the real tile protocols (WMTS and friends).
I’m cc’ing Gabriel, maybe he knows how things actually work.

And I also wonder if one counts with the number of CPU cores in this case, is it the phísical or the logical cores? (Sorry if this is a dumb question…)

Not dumb, I always wonder myself. The extra cores HT give are only useful for integer number computations, but not for float ones (as far as I know).
I don’t have a good answer here, gut feelilng, I’d take the physical ones and multiply by four.
If you want to have a “real” number instead, load test your server with increating number of parallel requests, with no limits, and
record when you get the maximum throughput, that’s likely the number you want to set in control-flow

Cheers

Andrea

==
GeoServer Professional Services from the experts! Visit
http://goo.gl/it488V for more information.

Ing. Andrea Aime

@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

AVVERTENZE AI SENSI DEL D.Lgs. 196/2003

Le informazioni contenute in questo messaggio di posta elettronica e/o nel/i file/s allegato/i sono da considerarsi strettamente riservate. Il loro utilizzo è consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora riceviate questo messaggio senza esserne il destinatario, Vi preghiamo cortesemente di darcene notizia via e-mail e di procedere alla distruzione del messaggio stesso, cancellandolo dal Vostro sistema. Conservare il messaggio stesso, divulgarlo anche in parte, distribuirlo ad altri soggetti, copiarlo, od utilizzarlo per finalità diverse, costituisce comportamento contrario ai principi dettati dal D.Lgs. 196/2003.

The information in this message and/or attachments, is intended solely for the attention and use of the named addressee(s) and may be confidential or proprietary in nature or covered by the provisions of privacy act (Legislative Decree June, 30 2003, no.196 - Italy’s New Data Protection Code).Any use not in accord with its purpose, any disclosure, reproduction, copying, distribution, or either dissemination, either whole or partial, is strictly forbidden except previous formal approval of the named addressee(s). If you are not the intended recipient, please contact immediately the sender by telephone, fax or e-mail and delete the information in this message that has been received in error. The sender does not give any warranty or accept liability as the content, accuracy or completeness of sent messages and accepts no responsibility for changes made after they were sent or for other risks which arise as a result of e-mail transmission, viruses, etc.