Opened 7 months ago

Closed 3 weeks ago

#2780 closed enhancement (fixed)

FIX - petascope cannot handle a lot of requests in parallel

Reported by: Bang Pham Huu Owned by: Bang Pham Huu
Priority: major Milestone: 10.2
Component: petascope Version: 10.2
Keywords: Cc: Dimitar Misev
Complexity: Medium

Description

  INFO [2023-09-16 09:20:43] AbstractController@895: Received request req-195: /rasdaman/ows?service=WMS&request=GetMap&version=1.3.0&transparent=TRUE&layers=DGM&styles=hillshade&format=image/png&width=256&height=256&time=2021-01-01T00:00:00.000Z&crs=EPSG:4326&bbox=49.724609375,8.52099609375,49.73095703125,8.525390625 with user rasadmin
  INFO [2023-09-16 09:20:43] AbstractController@895: Received request req-199: /rasdaman/ows?service=WMS&request=GetMap&version=1.3.0&transparent=TRUE&layers=DGM&styles=hillshade&format=image/png&width=256&height=256&time=2021-01-01T00:00:00.000Z&crs=EPSG:4326&bbox=49.75,8.54296875,49.775390625,8.560546875 with user rasadmin
 ERROR [2023-09-16 09:22:42] AbstractController@914: Failed processing request req-0, evaluation time 120386 ms. Reason: http://localhost:8080/rasdaman/def/crs/OGC/0/AnsiDate has IO error. Reason: Read timed out
 ERROR [2023-09-16 09:22:42] AbstractController@914: Failed processing request req-8, evaluation time 120101 ms. Reason: http://localhost:8080/rasdaman/def/crs/OGC/0/AnsiDate has IO error. Reason: Read timed out
 ERROR [2023-09-16 09:22:42] ExceptionUtil@98: Caught an exception:
http://localhost:8080/rasdaman/def/crs/OGC/0/AnsiDate has IO error. Reason: Read timed out
        at petascope.util.CrsUtil.getCrsDefinition(CrsUtil.java:764)
        at petascope.util.CrsUtil.getDatumOrigin(CrsUtil.java:440)
        at org.rasdaman.domain.cis.GeoAxis.getBoundNumber(GeoAxis.java:123)
        at org.rasdaman.domain.cis.GeoAxis.getLowerBoundNumber(GeoAxis.java:138)
        at petascope.wcps.metadata.service.WcpsCoverageMetadataTranslator.buildAxes(WcpsCoverageMetadataTranslator.java:488)
        at petascope.wcps.metadata.service.WcpsCoverageMetadataTranslator.create(WcpsCoverageMetadataTranslator.java:118)
        at petascope.wcps.metadata.service.WcpsCoverageMetadataTranslator.translate(WcpsCoverageMetadataTranslator.java:172)
        at petascope.wms.handlers.service.WMSGetMapWCPSMetadataTranslatorService.translate(WMSGetMapWCPSMetadataTranslatorService.java:68)
        at petascope.wms.handlers.kvp.KVPWMSGetMapHandler.handle(KVPWMSGetMapHandler.java:294)
        at petascope.controller.handler.service.KVPWMSServiceHandler.handle(KVPWMSServiceHandler.java:73)
        at petascope.controller.PetascopeController.lambda$requestDispatcher$0(PetascopeController.java:181)
        at petascope.controller.AbstractController.handleRequest(AbstractController.java:943)
        at petascope.controller.PetascopeController.requestDispatcher(PetascopeController.java:237)
        at petascope.controller.PetascopeController.handleGet(PetascopeController.java:95)
        at org.rasdaman.SecoreFilter.doFilter(SecoreFilter.java:79)
        at petascope.controller.SecoreFilter.doFilter(SecoreFilter.java:81)
        at org.rasdaman.CorsFilter.doFilterInternal(CorsFilter.java:47)
        at com.rasdaman.accesscontrol.service.RequestsFilter.doFilter(RequestsFilter.java:201)
Caused by: Read timed out
        at petascope.util.HttpUtil.getInputStream(HttpUtil.java:102)
        at petascope.util.HttpUtil.getSECOREInputStream(HttpUtil.java:118)
        at petascope.util.CrsUtil.getInputStreamByInternalOrExternalSECORE(CrsUtil.java:496)
        at petascope.util.CrsUtil.getCrsDefinition(CrsUtil.java:576)

I sent the requests like this:

xargs --verbose -P 0 -n 1 curl -u "$rasuser:$raspass" -s -o /dev/null < "requests.txt"

Notice the -P 0:
If max-procs is 0, xargs will run as many processes as possible at a time.

Change History (2)

comment:1 by Bang Pham Huu, 7 months ago

Owner: changed from b to Bang Pham Huu

comment:2 by Bang Pham Huu, 3 weeks ago

Resolution: fixed
Status: assignedclosed

I tested it like this to run many parallel GetCoverage processes and it has no error in petascope.log

for i in {1..500}; do
    nohup curl -d 'service=WCS&version=2.0.1&request=GetCoverage&coverageId=test_eobstest_1&format=image/png&subset=t("1949-12-31T12:00:00.000Z")' 'http://localhost:8080/rasdaman/ows'  -o /dev/null &
done

Note: See TracTickets for help on using tickets.