Hi Simone,

First thank you for your quick answer.


I've updated our layers to use the multithreading. With the default 
configuration I've found it's faster this way for less than 5 users. 


My test was to create x users and generate 10 requests for each of them.

I did a lot of testing using different configuration.

 I've tried changing the workQueue object ofthe ThreadPoolExecutor for 
SynchronousQueue and ArrayBlockingQueue. In both cases some tasks are dropped 
(pass +/-15 users). So these 2 queues might be useful but require more fine 
tuning.

I've switched back to the default queue, LinkedBlockingQueue with corePoolSize 
set to 16 which gave me the vest overall result.

Here are some results:


AllowMultithreading=true, default pool setting
 users       avg        Median     90% 
 1            1670      1986        2416
 5            1495      1510        2381
 10          2278      2289        3392
 15          3885      3945        5136

AllowMultithreading=false
 
 users     avg     Median     90% 
 1           2217  2417        3253
 5           1763  1635        3037
 10         2370  2325        3450
 15         2821  2553        4779

AllowMultithreading=true, LinkedBlockingQueue with corePoolSize=16
   users     avg     Median     90%
   1          1669   1980        2407
   5          1371   1279        2207
   10        1756   1580        2798
   15        2599   2464        4430

thanks

Mathieu



________________________________________
From: simbo...@gmail.com [simbo...@gmail.com] On Behalf Of Simone Giannecchini 
[simone.giannecch...@geo-solutions.it]
Sent: Wednesday, June 16, 2010 6:28 AM
To: Mathieu Lavoie
Cc: geoserver-devel@lists.sourceforge.net
Subject: Re: [Geoserver-devel] Fixed number of threads used by  
ImageMosaicReader from the ImageMosaic plugin

Ciao Mathieu,
two things:

-1- By default we do not use that multithreading switch, so it should
not impact your requests
-2- In newer version of the plugin we are making that thread pool configurable

Question, which are the values for the mosaic parameters that you are using?

Ciao,
Simone.
-------------------------------------------------------
Ing. Simone Giannecchini
GeoSolutions S.A.S.
Founder - Software Engineer
Via Carignoni 51
55041  Camaiore (LU)
Italy

phone: +39 0584983027
fax:      +39 0584983027
mob:    +39 333 8128928


http://www.geo-solutions.it
http://geo-solutions.blogspot.com/
http://www.linkedin.com/in/simonegiannecchini
http://twitter.com/simogeo

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



On Tue, Jun 15, 2010 at 5:39 PM, Mathieu Lavoie
<mathieu.lav...@valtus.com> wrote:
> Hi,
>
> I'm running a Jmeter test that send some WMS requests to Geoserver to 
> investigate a performance issue we encounter while deploying our app. I can 
> see that the time to respond is really slowing down for more than 5 users.
>
> Looking at the threads usage using JVisualVM, I've found that the number of 
> threads used by the ImageMosaicReader was not adjusted to reach the 
> maximumPoolSize.
>
> I've done some tests by increasing the corePoolSize value to a higher value 
> and, in my case, the average time to process a WMS request is faster.
>
> An average of 2852ms with corePoolSize=8 threads compare to 3885ms with 
> corePoolSixe=4 with 15 users doing 10 calls each.
>
> We're running Geoserver 2.0.2 on a 2 Quad-Core server with 32GB RAM, so our 
> server can handle more threads.
>
> Unfortunately, the corePoolSize and maximumPoolSize value are hard coded in 
> the ImageMosaicReader class and since the ThreadPoolExecutor is using a 
> LinkedBlockingQueue, the maximumPoolSize is not used. In other word, the 
> number of useful threads is 4:
>
>
> public final class ImageMosaicReader extends AbstractGridCoverage2DReader 
> implements GridCoverageReader {
>
>        /** Logger. */
>        private final static Logger LOGGER = 
> org.geotools.util.logging.Logging.getLogger(ImageMosaicReader.class);
>
>        final static ExecutorService multiThreadedLoader= new 
> ThreadPoolExecutor(4,8,30,TimeUnit.SECONDS,new 
> LinkedBlockingQueue<Runnable>());
>
> Is there a particular reason to have those values hard coded?
>
> Is there any chance that a future version includes a way to customize those 
> values either by the Geoserver UI or a properties file?
>
> And in the mean time, is there another possible workaround other than 
> recompiling the gt-imagemosaic jar.
>
>
> Thank you
>
>
>
> ------------------------------------------------------------------------------
> ThinkGeek and WIRED's GeekDad team up for the Ultimate
> GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
> lucky parental unit.  See the prize list and enter to win:
> http://p.sf.net/sfu/thinkgeek-promo
> _______________________________________________
> Geoserver-devel mailing list
> Geoserver-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/geoserver-devel
>
------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

Reply via email to