Rollbase REST API performance - Forum - Rollbase - Progress Community

Rollbase REST API performance

 Forum

Rollbase REST API performance

  • Hi,

    Where working with rollbase 4.0.2.

    We have 2 environments:

    First:

    production 2 servers:

    1 webserver win 2012 (Virtual)

    1 DB server win 2012 solid.

    test server

    1 vm 2012 with db and webserver.

    we experience performance differences on the test and production sever when using the REST API with the same call.

    On the production server the call have the response time of 16085 ms

    On the test Server the same call have the response time of 3190 ms.

    could you give me some advice?

    thanks in advance.

    Jorrit

  • Hi Jorrit,

    Performance depreciation is expected since db and webserver in your production setup are on different machines (compared to test setup where both db and webserver are on same machine). But in your case the depreciation seems a little too high.

    Please share more details about your setup:

    * What is the difference between your test and production setup in terms of machine capacity - RAM/compute power etc

    * What is the difference between your test and production setup in terms of load? How many concurrent REST API calls are being made in production setup?

    Thanks,

    Ankit

  • Hi Jorrit,

    It looks like we have had a similar problem. That was with Rollbase 3.1. Our problem concentrated on the login method of the REST api.. It took +/- 12 seconds (12000ms) to login. All methods executed after login were performing well.

    Now, if I substract the time of your "bad" server from the time of your "good" server, the result is also +/- 12 seconds. At my side the problem was gone after we moved to a new server. The problem itself is never fixed.

    Progress Support did already research to the problem I had, so maybe it's a good idea to log a case. (for Progress Support members: my case number was 00316849)

    Regards,

    Harrie

  • Hi Jorrit,

    Please let us know following information if you still facing the problem:

    1. Which APIs you facing problem,

    2. What the DB Size & Number of records you fetching.

    3. Number of fields in the objects.

    We will try to find the root cause by replicating the same.

    Regards

    Ajay

  • Hi Ankit,

    Where in testing mode with both production and test server so there are no other REST calls at the moment.

    The production setup is:

    DB Server

    Windows 2012 with 2 Intel Xeon CPU E5-2670 v3 and Installed memory 32 GB

    Webserver

    Windows 2012 with 2 AMD Opteron Processor 6174 and Installed memory 16 GB

    The test setup is:

    DB and webserver

    Windows 2012 with 2 Intel Xeon CPU E5-2670 v3 and Installed memory 16 GB

    What i also see on the production server when user logs in for the first time it takes about 10 seconds.

    after that when the user logs off and login again it is fast.

    what i see on the production server when using REST API Login, every call gives back the same sessionId. On the test server every call gives a new sessionId.

    Thanks in advance,

    Jorrit

  • Hi Ajay,

    This is the call.

    /rest/api/getPage?output=json

    &sessionId=123456

    &viewId=93652

    &startRow=0

    &rowsPerPage=10

    &composite=1

    &objNames=tyrequality,tyreperformance,tyreproperty

    &fieldList=id,tyretypen_number,name,tyretypem_xmlbacshorttype,R_tyretype_tyrebrand,R_tyretype_seasonappliance,tyretypem_pictureurl,tyretypem_explanation,tyretotransporttypem_labelcode,tyretotransporttypem_tyrecategory,tyrequalitym_description,tyreperformancem_description,tyrepropertym_longdescription,tyrepropertym_countrycode,K_tyretotransporttypem_labelcode,K_tyretotransporttypem_tyrecategory

    Records fetching with call above: 388

    Records in DB: 177.373

    DB folder size in WRK: 300 MB

    Thanks in advance,

    Jorrit

  • Hi Jorrit,

    Regarding:

    >>>>>>>>>>>>>>>>>>>>>>

    What i also see on the production server when user logs in for the first time it takes about 10 seconds. After that when the user logs off and login again it is fast.

    <<<<<<<<<<<<<<<<<<<<<<

    First login is expected to take a little extra time. This is because first login involves loading customer in memory. Once loaded the customer is cached in memory and hence subsequent logins work much faster.

    Thanks,

    Ankit

  • Hi Harrie,

    The first login with the rest method Login takes about 12 seconds. after that we do a call like getPage its slow.

    when we do the same call again it extremely fast.

    if i change the call for example  rowsPerPage from 10 to 11 its slow again.

    I think its something about cashing.

    Regards Jorrit

  • Hi Jorrit,

    The problem maybe related to network latency between the webserver machine and db. Please check this.

    Thanks,

    Ankit

  • Hi Ankit,

    I tested the network latency by pinging the network while request the REST API and see no delay.

    The strange thing i noticed is that when i call the login method on the production the sessionId stays the same. when i do the same on the test server the sessionId changes everytime i run the login method.

    see image attached for the ping reply.

    thanks in advance.

    Jorrit

  • Hi

    Maybe someone can help me

    this is some localhost_acces_log logfile on the prod webserver.

    127.0.0.1 - - [17/Nov/2015:22:03:08 +0100] "GET /prod1/api/getPage?output=json&sessionId=........&viewId=93652&startRow=0&rowsPerPage=11&composite=1&objNames=tyrequality,tyreperformance,tyreproperty&fieldList=id,tyretypen_number,name,tyretypem_xmlbacshorttype,R_tyretype_tyrebrand,R_tyretype_seasonappliance,tyretypem_pictureurl,tyretypem_explanation,tyretotransporttypem_labelcode,tyretotransporttypem_tyrecategory,tyrequalitym_description,tyreperformancem_description,tyrepropertym_longdescription,tyrepropertym_countrycode,K_tyretotransporttypem_labelcode,K_tyretotransporttypem_tyrecategory&t=327***********83119329330734472331734573096309432963191325441193337321234533299323444783412317832184410435243564296429142594356441042994250427543584293== HTTP/1.1" 200 15788 8528

    (external IP) - - [17/Nov/2015:22:03:08 +0100] "GET /rest/api/getPage?output=json&sessionId=.........&viewId=93652&startRow=0&rowsPerPage=11&composite=1&objNames=tyrequality,tyreperformance,tyreproperty&fieldList=id,tyretypen_number,name,tyretypem_xmlbacshorttype,R_tyretype_tyrebrand,R_tyretype_seasonappliance,tyretypem_pictureurl,tyretypem_explanation,tyretotransporttypem_labelcode,tyretotransporttypem_tyrecategory,tyrequalitym_description,tyreperformancem_description,tyrepropertym_longdescription,tyrepropertym_countrycode,K_tyretotransporttypem_labelcode,K_tyretotransporttypem_tyrecategory HTTP/1.0" 200 15788 8543

    127.0.0.1 - - [17/Nov/2015:22:05:07 +0100] "POST /master/servlet/Component HTTP/1.1" 200 284 15

    127.0.0.1 - - [17/Nov/2015:22:05:07 +0100] "POST /prod1/servlet/Component HTTP/1.1" 200 281 0

    127.0.0.1 - - [17/Nov/2015:22:05:07 +0100] "POST /rest/servlet/Component HTTP/1.1" 200 193 16

    127.0.0.1 - - [17/Nov/2015:22:05:07 +0100] "POST /router/servlet/Component HTTP/1.1" 200 197 0

    127.0.0.1 - - [17/Nov/2015:22:05:07 +0100] "POST /webapi/servlet/Component HTTP/1.1" 200 197 31

    127.0.0.1 - - [17/Nov/2015:22:05:07 +0100] "POST /search/servlet/Component HTTP/1.1" 200 197 0

    127.0.0.1 - - [17/Nov/2015:22:05:07 +0100] "POST /storage/servlet/Component HTTP/1.1" 200 235 0

    127.0.0.1 - - [17/Nov/2015:22:05:07 +0100] "POST /workflow/servlet/Component HTTP/1.1" 200 201 16

    127.0.0.1 - - [17/Nov/2015:22:05:07 +0100] "GET /router/login/login.jsp HTTP/1.1" 302 - 0

    127.0.0.1 - - [17/Nov/2015:22:05:07 +0100] "GET /router/login/loginPrivate.jsp? HTTP/1.1" 200 5828 15

    127.0.0.1 - - [17/Nov/2015:22:06:07 +0100] "POST /storage/servlet/Storage HTTP/1.1" 200 9 94

    127.0.0.1 - - [17/Nov/2015:22:06:07 +0100] "POST /search/servlet/Component HTTP/1.1" 200 16 16

    127.0.0.1 - - [17/Nov/2015:22:06:07 +0100] "POST /master/servlet/Component HTTP/1.1" 200 11 0

    127.0.0.1 - - [17/Nov/2015:22:06:07 +0100] "POST /master/servlet/Component HTTP/1.1" 200 23 0

    127.0.0.1 - - [17/Nov/2015:22:06:07 +0100] "POST /storage/servlet/Storage HTTP/1.1" 200 9 94

    127.0.0.1 - - [17/Nov/2015:22:06:07 +0100] "POST /search/servlet/Component HTTP/1.1" 200 18 0

    127.0.0.1 - - [17/Nov/2015:22:06:07 +0100] "POST /router/servlet/Component HTTP/1.1" 200 15 0

    127.0.0.1 - - [17/Nov/2015:22:06:07 +0100] "POST /prod1/servlet/Component HTTP/1.1" 200 11 0

    127.0.0.1 - - [17/Nov/2015:22:06:07 +0100] "POST /prod1/servlet/Component HTTP/1.1" 200 23 0

    127.0.0.1 - - [17/Nov/2015:22:09:07 +0100] "POST /storage/servlet/Storage HTTP/1.1" 200 9 94

    127.0.0.1 - - [17/Nov/2015:22:09:07 +0100] "POST /search/servlet/Component HTTP/1.1" 200 16 16

    127.0.0.1 - - [17/Nov/2015:22:09:07 +0100] "POST /master/servlet/Component HTTP/1.1" 200 11 0

    127.0.0.1 - - [17/Nov/2015:22:09:07 +0100] "POST /master/servlet/Component HTTP/1.1" 200 23 0

    127.0.0.1 - - [17/Nov/2015:22:09:08 +0100] "POST /storage/servlet/Storage HTTP/1.1" 200 9 94

    127.0.0.1 - - [17/Nov/2015:22:09:08 +0100] "POST /search/servlet/Component HTTP/1.1" 200 18 15

    127.0.0.1 - - [17/Nov/2015:22:09:08 +0100] "POST /router/servlet/Component HTTP/1.1" 200 15 0

    127.0.0.1 - - [17/Nov/2015:22:09:08 +0100] "POST /prod1/servlet/Component HTTP/1.1" 200 11 0

    127.0.0.1 - - [17/Nov/2015:22:09:08 +0100] "POST /prod1/servlet/Component HTTP/1.1" 200 23 0

    127.0.0.1 - - [17/Nov/2015:22:10:09 +0100] "POST /master/servlet/Component HTTP/1.1" 200 284 15

    127.0.0.1 - - [17/Nov/2015:22:10:09 +0100] "POST /prod1/servlet/Component HTTP/1.1" 200 281 0

    127.0.0.1 - - [17/Nov/2015:22:10:09 +0100] "POST /rest/servlet/Component HTTP/1.1" 200 193 0

    127.0.0.1 - - [17/Nov/2015:22:10:09 +0100] "POST /router/servlet/Component HTTP/1.1" 200 197 0

    127.0.0.1 - - [17/Nov/2015:22:10:09 +0100] "POST /webapi/servlet/Component HTTP/1.1" 200 197 0

    127.0.0.1 - - [17/Nov/2015:22:10:09 +0100] "POST /search/servlet/Component HTTP/1.1" 200 197 0

    127.0.0.1 - - [17/Nov/2015:22:10:09 +0100] "POST /storage/servlet/Component HTTP/1.1" 200 235 0

    127.0.0.1 - - [17/Nov/2015:22:10:09 +0100] "POST /workflow/servlet/Component HTTP/1.1" 200 201 0

    127.0.0.1 - - [17/Nov/2015:22:10:09 +0100] "GET /router/login/login.jsp HTTP/1.1" 302 - 0

    127.0.0.1 - - [17/Nov/2015:22:10:09 +0100] "GET /router/login/loginPrivate.jsp? HTTP/1.1" 200 5828 0

    127.0.0.1 - - [17/Nov/2015:22:10:10 +0100] "POST /prod1/servlet/Component HTTP/1.1" 200 17 0

    127.0.0.1 - - [17/Nov/2015:22:10:10 +0100] "POST /storage/servlet/Log HTTP/1.1" 200 - 15

    127.0.0.1 - - [17/Nov/2015:22:10:10 +0100] "POST /storage/servlet/Log HTTP/1.1" 200 - 0

    127.0.0.1 - - [17/Nov/2015:22:12:08 +0100] "POST /storage/servlet/Storage HTTP/1.1" 200 9 93

    127.0.0.1 - - [17/Nov/2015:22:12:08 +0100] "POST /search/servlet/Component HTTP/1.1" 200 16 16

    127.0.0.1 - - [17/Nov/2015:22:12:08 +0100] "POST /master/servlet/Component HTTP/1.1" 200 11 0

    127.0.0.1 - - [17/Nov/2015:22:12:08 +0100] "POST /master/servlet/Component HTTP/1.1" 200 23 0

    127.0.0.1 - - [17/Nov/2015:22:12:08 +0100] "POST /storage/servlet/Storage HTTP/1.1" 200 9 94

    127.0.0.1 - - [17/Nov/2015:22:12:08 +0100] "POST /search/servlet/Component HTTP/1.1" 200 18 0

    127.0.0.1 - - [17/Nov/2015:22:12:08 +0100] "POST /router/servlet/Component HTTP/1.1" 200 15 0

    127.0.0.1 - - [17/Nov/2015:22:12:08 +0100] "POST /prod1/servlet/Component HTTP/1.1" 200 11 0

    127.0.0.1 - - [17/Nov/2015:22:12:08 +0100] "POST /prod1/servlet/Component HTTP/1.1" 200 23 0

    127.0.0.1 - - [17/Nov/2015:22:15:08 +0100] "POST /storage/servlet/Storage HTTP/1.1" 200 9 94

    127.0.0.1 - - [17/Nov/2015:22:15:08 +0100] "POST /search/servlet/Component HTTP/1.1" 200 16 15

    127.0.0.1 - - [17/Nov/2015:22:15:08 +0100] "POST /master/servlet/Component HTTP/1.1" 200 11 0

    127.0.0.1 - - [17/Nov/2015:22:15:08 +0100] "POST /master/servlet/Component HTTP/1.1" 200 23 0

    127.0.0.1 - - [17/Nov/2015:22:15:09 +0100] "POST /storage/servlet/Storage HTTP/1.1" 200 9 109

    127.0.0.1 - - [17/Nov/2015:22:15:09 +0100] "POST /search/servlet/Component HTTP/1.1" 200 18 0

    127.0.0.1 - - [17/Nov/2015:22:15:09 +0100] "POST /router/servlet/Component HTTP/1.1" 200 15 0

    127.0.0.1 - - [17/Nov/2015:22:15:09 +0100] "POST /prod1/servlet/Component HTTP/1.1" 200 11 0

    127.0.0.1 - - [17/Nov/2015:22:15:09 +0100] "POST /prod1/servlet/Component HTTP/1.1" 200 23 0

    127.0.0.1 - - [17/Nov/2015:22:15:10 +0100] "POST /master/servlet/Component HTTP/1.1" 200 284 0

    127.0.0.1 - - [17/Nov/2015:22:15:10 +0100] "POST /prod1/servlet/Component HTTP/1.1" 200 281 0

    127.0.0.1 - - [17/Nov/2015:22:15:10 +0100] "POST /rest/servlet/Component HTTP/1.1" 200 193 16

    127.0.0.1 - - [17/Nov/2015:22:15:10 +0100] "POST /router/servlet/Component HTTP/1.1" 200 197 0

    127.0.0.1 - - [17/Nov/2015:22:15:10 +0100] "POST /webapi/servlet/Component HTTP/1.1" 200 197 0

    127.0.0.1 - - [17/Nov/2015:22:15:10 +0100] "POST /search/servlet/Component HTTP/1.1" 200 197 15

    127.0.0.1 - - [17/Nov/2015:22:15:10 +0100] "POST /storage/servlet/Component HTTP/1.1" 200 235 0

    127.0.0.1 - - [17/Nov/2015:22:15:10 +0100] "POST /workflow/servlet/Component HTTP/1.1" 200 201 0

    127.0.0.1 - - [17/Nov/2015:22:15:10 +0100] "GET /router/login/login.jsp HTTP/1.1" 302 - 0

    127.0.0.1 - - [17/Nov/2015:22:15:10 +0100] "GET /router/login/loginPrivate.jsp? HTTP/1.1" 200 5828 0

  • Hi Jorrit,

    Just to double check - did you test network latency by pinging db machine from inside the web server machine?

    Please log a support case with Progress.

    Thanks,

    Ankit

  • Hi Ankit,

    Yes i did the test on the webserver to the DB server.

    I wil log the supportcall.

    Thanks for your help.

    Regards Jorrit.