Do we have guidelines or articles about scaling the jsreport



  • I want to know how to scale up horizontally the jsreport? Is there some kind of worker process that delegate the jobs or other server instance or docker instance? Let say I have thousands of users that generate the reports at the same time how does jsReport handles that without time out and balance the workload to multiple servers?



  • You can scale jsreport horizontal as any other app - Run multiple jsreport instances and load balance the requests.
    If you want to modify your templates in the realtime, it is recommended to use a full database for storing templates. Like mongo.

    jsreport automatically scales vertically. The hard work like templating engines evaluation or chrome execution is running in the extra processes.
    This means that many requests spin up many processes to serve the work.



  • I'm not sure about the performance but i did a quick load testing of with 100 virtual users on alienware gaming laptop with 8cores cpu and 16gb memory, and it dies on just 800 samples with a throughput of 1 operation per minute.. which is very poor. check the image here

    https://forum.jsreport.net/topic/1106/minimalist-setup-on-jsreport-do-you-have-samples/12



  • Yes, this is expected. With the default config, and 100 parallel requests, jsreport creates ~100 processes for rendering. Please try to add this config. It will limit the number of used worker processes.

    {
       "chrome": { 
         "strategy": "chrome-pool", 
         "numberOfWorkers": 5 
      },
      "templatingEngines": {       
          "strategy": "http-server",
         "numberOfWorkers": 5   
      }
    }
    

    https://jsreport.net/learn/configuration
    https://jsreport.net/learn/chrome-pdf#reuse-chrome-instances

    This should make your parallel test passing.
    If not, maybe you should consider putting a full webserver like nginx before the jsreport and configure there throtling and delayed requests execution during peak.


Log in to reply
 

Looks like your connection to jsreport forum was lost, please wait while we try to reconnect.