[MapProxy] MapProxy Performance

Oliver Tonnhofer olt at omniscale.de
Mon Mar 14 10:20:00 EDT 2011


Hej Johan,

On 14.03.2011, at 13:15, Johan Sandberg wrote:
> Im performing some performance testing on wms+cache, where mapproxy is included.
> 
> I runn 6000 URLS from a list and use a webstress program to read the list, with 10 request/sec.
> 
> The performance of the test are really low and I think it has to do with this exception.
> Anyone nows what this exception means, and/or it can be fixed ?

As Andreas already mentioned, the paster HTTP server is not build for production and you should get better results with other servers. Python and thus MapProxy does not scale well with multiple threads, so it is recommended to use servers that use multiple processes (mod_wsgi daemon mode, gunicorn, flup_fork, etc.) Unfortunately, the deployment options on Windows are limited, see: http://stackoverflow.com/questions/4012621/python-wsgi-deployment-on-windows-for-cpu-bound-application

In addition to that, the performance is better on Linux or Mac OS X than on Windows. It does not perform so well with lots of file operations (which is an important for MapProxy). So, MapProxy does run well on Windows for testing (not benchmarking) and running it for a few users, but if you have lots of users, I would deploy it on a Linux system.


> Exception happened during processing of request from
> Exception happened during processing of request from  (('17'2011-03-14 12:22:59,
> 194 - INFO - 3484:mapproxy.client.http.http:_log - localhost:8080 - - [14/Mar/20
> 11:12:22:59 ] "GET /geoserver/wms?layers=Jarfalla_tatort&width=927&version=1.1.1
> &bbox=137106.437128,6588627.33556,137157.010126,6588677.90856&service=WMS&format
> =image%2Fpng&styles=&srs=EPSG%3A3011&request=GetMap&height=927 HTTP/1.1" 200 - "
> -" ""
> 1722..18.6168.1.266', 4715)
> Traceback (most recent call last):
>   File "c:\mapproxy_venv\lib\site-packages\paste-1.7.5.1-py2.6.egg\paste\httpser
> ver.py", line 1068, in process_request_in_thread
> 6.12    self.finish_request(request, client_address)
>  6',  File "C:\Python26\Lib\SocketServer.py", line 322, in finish_request
> 4721)    self.RequestHandlerClass(request, client_address, self)
>   File "C:\Python26\Lib\SocketServer.py", line 618, in __init__
>     self.finish()
>   File "C:\Python26\Lib\SocketServer.py", line 661, in finish
>     self.wfile.flush()
>   File "C:\Python26\Lib\socket.py", line 297, in flush
>     self._sock.sendall(buffer(data, write_offset, buffer_size))
> error: [Errno 10054] En befintlig anslutning tvingades att stõnga av fjõrrvõrdda
> torn

How do you run the tests? This output is a result of a client that dropped the connection before MapProxy finished sending the response.


Regards,
Oliver

-- 
Oliver Tonnhofer    | Omniscale GmbH & Co KG    | http://omniscale.de
http://mapproxy.org | https://bitbucket.org/olt





More information about the MapProxy mailing list