We have the jsreport docker full running on an azure app service (P1V3) with a connection to an azure storage.
Lately we have been having a lot of issues with timeouts when doing an import through both powershell and the jsreport cli.
An app service has a timeout of about 200seconds which we seem to hit each and every time.
I've been able to reproduce this behavior locally where imports get slower depending on the amount of files already known by jsreport. My guess is the azure-storage implementation that seems to be overloading calls to the storage account.
We've already made our blob storage into a premium one (which uses SSDs instead of magnetic disks), but this does not give a difference.
These are the timings I get when binding my local environment to the storage account and doing imports for 4 projects with the same files (206 entities) in it:
import |
import time storage account |
1 |
1,1minute |
2 |
2,1minutes |
3 |
3.2minutes |
4 |
4.3minutes |
In the monitoring we see a huge amount of calls going towards the storage account:
Not sure if related, but during this long import/export, we see many of these messages in the console:
When doing an export of a single file after the 4 imports above (so 4 times 205 entities), it took me 4.5 minutes:
These are the requests that have been made to the storage account during that 4 minute export (no other load than me):
Do we have some mistake in our configuration? Or is there something else going on here?
This is our configuration:
{
"httpPort": 5488,
"store": {
"provider": "fs"
},
"blobStorage": {
"provider": "fs"
},
"trustUserCode": true,
"reportTimeout": 180000,
"workers": {
"numberOfWorkers": 8
},
"extensions": {
"fs-store": {
"externalModificationsSync": false,
"persistence": {
"provider": "azure-storage"
}
},
"chrome-pdf": {
"launchOptions": {
"timeout": 180000,
"args": ["--no-sandbox", "--disable-setuid-sandbox"],
"ignoreDefaultArgs": ["--disable-extensions"]
}
},
"fs-store-azure-storage-persistence": {
"accountName": "<account name>",
"accountKey": "<secret>",
"container": "<container>"
},
"authentication": {
"cookieSession": {},
"admin": {
"username": "admin",
"password": "password"
},
"enabled": false
},
"scripts": {
"strategy": "http-server"
}
},
"templatingEngines": {
"strategy": "http-server"
},
"chrome": {
"timeout": 180000,
"strategy": "chrome-pool",
"numberOfWorkers": 8
},
"sandbox": {
"allowedModules": "*"
}
}