[mapserver-users] Is Mapserver known to play nice with Proj 6.3 ?

Even Rouault even.rouault at spatialys.com
Wed Feb 5 13:22:25 PST 2020


Hi,

> 1) For my deployment of FastCGI mapserver (master or 7.4.x build) and based
> on my monitoring, CPU usage is about double vs my previous setup of
> mapserver 7.3.x and Proj 5.2.0.  My comment here is lame I know as I have
> yet to produce a test case showing that actual difference.  All the other
> support libraries that went into the new build are updated too, so it is
> unfair to perhaps blame proj here :)  I had lots of previous fun[1] with a
> newer proj and postgis when an old sqlite3 library is at play, but I'm
> using the most recent version of that here.

There's certainly a performance hit with PROJ >= 6. How much it is depends on 
a lot of things. I'm not sure there are so many low hanging fruits remaining, 
but precise reproducer to investigate could be useful. Normally in FastCGI, 
the initial overhead should be amortized in following requests reusing the 
same process.

However with branch 7.4 you will use PROJ.4 API of PROJ 6, so a x2 performance 
hit is not expected in that situation. It should exhibit performance similar 
to PROJ 5.

> 2) I could not get master branch to build with proj 6.3, I get the error:
> 
> [  0%] Building C object CMakeFiles/mapserver.dir/fontcache.c.o
> In file included from /home/akrherz/projects/mapserver/mapproject.h:46,
>                  from /home/akrherz/projects/mapserver/mapshape.h:35,
>                  from /home/akrherz/projects/mapserver/mapserver.h:126,
>                  from /home/akrherz/projects/mapserver/fontcache.c:30:
> /opt/miniconda3/envs/prod/include/proj_api.h:37:2: error: #error 'To use the
> proj_api.h you must define the macro ACCEPT_USE_OF_DEPRECATED_PROJ_API_H'
> #error 'To use the proj_api.h you must define the macro
> ACCEPT_USE_OF_DEPRECATED_PROJ_API_H'

That's not expected. Is there a /opt/miniconda3/envs/prod/include/proj.h file 
as there should normally be one for PROJ >= 6 ?

> 3) I've been seeing lots of segfaulting and coredumps

You should make sure that all MapServer direct or indirect dependencies use 
the same PROJ version.
(or you can use the -DPROJ_RENAME_SYMBOLS trick as in
https://github.com/mapserver/mapserver/blob/master/ci/travis/script.sh#L16
and
https://github.com/mapserver/mapserver/blob/master/ci/travis/script.sh#L30)

That said...

> 4) It appears like Travis CI testing is all against proj 6.1.1, maybe I
> should revert to that? :)

I've just tested with PROJ 6.3.0 and I indeed see number of crashes/wrong 
results when running msautotest. Those disappear when using the HEAD of the 
6.3 git branch.
I've raised the opportunity to issue a PROJ 6.3.1 release in
https://lists.osgeo.org/pipermail/proj/2020-February/009339.html

Even

-- 
Spatialys - Geospatial professional services
http://www.spatialys.com


More information about the mapserver-users mailing list