On Fri, 18 Oct 2019 at 10:17, Jody Garnett <jody.garn...@gmail.com> wrote:

> That is ... unexpected.
>
> So there are other solutions to notify tile cache state across the cluster
> right.  Are they more appropriate then depending on file system polling
> here?
>

I would suspect so. The catalog does so it should be possible to do the
same with the tile layer catalog. Meanwhile I wouldn't mind this
improvement.


>
> On Thu, Oct 17, 2019 at 11:27 PM Gabriel Roldan <gabriel.rol...@gmail.com>
> wrote:
>
>>
>>
>> On Thu, 17 Oct 2019 at 13:46, Jody Garnett <jody.garn...@gmail.com>
>> wrote:
>>
>>> Bad news is FileSystemWatcher is killing the machine. For each instance
>>>> it gets one thread eating 100% of one CPU all the time. Reported this
>>>> before, just sharing my pain.
>>>>
>>>> Been looking at replacing the internals of FileSystemWatcher to use
>>>> java.nio.file.WatchService, and although at a first glance it looks pretty
>>>> straightforward, it's not gonna be that simple.
>>>>
>>>
>>> Darn, that was the point of making the interface (since we could not use
>>> WatchService on Java 7 yet).
>>>
>>>
>>>> There are a number of situations where it just won't work, basically
>>>> when the data dir is on any sort of mapped filesystem (NFS, SAMBA, Docker
>>>> bind mounts), for which the Linux implementation doesn't work as it relies
>>>> on inotify.
>>>>
>>>> The MacOS implementation is a polling one, but it's gonna be better
>>>> than the current custom one anyways. And for Windows, I don't know yet.
>>>>
>>>
>>> Still this was only supposed to be used for a few files like the
>>> security settings which require active notification? If a watcher is being
>>> setup beyond that ... is it a mistake?
>>>
>>> In any case it's clear that anyone that has a large catalog will most
>>>> probably have it on a shared filesystem to be used by several instances.
>>>> So this might require a GSIP, which I'm willing to start, in order to
>>>> tackle on the different scenarios, as it can get even more involved as
>>>> above described.
>>>>
>>>
>>> Before you go that far can we talk about how FileSystemWatcher is being
>>> used...
>>>
>>
>> Right. It's DefaultTileLayerCatalog listening to changes to gwc-layers/*
>> in order to update tile layer configs when they're updated externally on a
>> cluster (added at commit 966a8af90fc6b68725a78b09829c3cbc7360242e).
>>
>> For the time being, I managed to reduce the polling runtime from over 2
>> minutes to ~350 milliseconds, the CPU usage from constant 100% to peaks
>> bellow 25% (or so says htop). Memory usage: old gen up to 477MB from 450MB,
>> eden space peaks and down quickly of 1GB instead of fixed at around 850MB.
>>
>> Got some clean up to do before issueing a PR, but here it is:
>>
>> https://github.com/groldan/geoserver/commit/0ba1614a7f9b1b2bea5647160441f3bd534c9979
>>
>> Gabriel
>>
>>>
>>> --
>>> Jody
>>>
>>
>>
>> --
>> Gabriel Roldán
>>
> --
> --
> Jody Garnett
>


-- 
Gabriel Roldán
_______________________________________________
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

Reply via email to