With the new requirements in Discussion APIs; we have introduced an attribute "child_count" in all Response/Comment endpoints. The platform APIs call forum APIs; hence a corresponding change is made in Forum application too. We have opted to cache comment's child_count as part of DB object. In order to keep child_count field value in sync with the actual number of comment children, we have re-evaluated its value on comment get, create and delete end points; however, comment list endpoint returns cached value to keep good performance stats (except for any existing data for which we re-evaluate child_count and cache it then).
We have gathered and compared two sets of load test results. The former results (i.e. With Child Comment Count) are run on the latest changes and the later are run when we had no "child_count" in question.
New Relic Dashboard: https://rpm.newrelic.com/accounts/88178/custom_dashboards/pages/9377
| |
---|
No. of clients = 48 req/s = 3.80 Methods | median response time | 95% | 99% |
---|
DELETE_comment | 270 | 410 | 2500 | DELETE_thread | 190 | 240 | 260 | GET_comment_list | 160 | 270 | 340 | GET_thread | 230 | 370 | 470 | GET_thread_list | 440 | 740 | 840 | PATCH_comment | 310 | 450 | 2500 | PATCH_thread | 210 | 350 | 420 | POST_comment_comment | 420 | 580 | 2800 | POST_comment_response | 360 | 530 | 2800 | POST_thread | 260 | 390 | 440 | auto_auth | 210 | 230 | 230 |
| No. of clients = 48 req/s = 3.70 Methods | median response time | 95% | 99% |
---|
DELETE_comment | 270 | 1600 | 1700 | DELETE_thread | 190 | 280 | 330 | GET_comment_list | 160 | 260 | 300 | GET_thread | 230 | 300 | 420 | GET_thread_list | 400 | 690 | 770 | PATCH_comment | 350 | 860 | 1900 | PATCH_thread | 210 | 310 | 440 | POST_comment_comment | 400 | 540 | 1800 | POST_comment_response | 370 | 580 | 1900 | POST_thread | 260 | 390 | 430 | auto_auth | 200 | 200 | 200 |
|
No. of clients = 68 req/s = 5.30 Methods | median response time | 95% | 99% |
---|
DELETE_comment | 270 | 3000 | 3200 | DELETE_thread | 180 | 240 | 260 | GET_comment_list | 160 | 270 | 320 | GET_thread | 230 | 300 | 370 | GET_thread_list | 450 | 760 | 820 | PATCH_comment | 300 | 470 | 3200 | PATCH_thread | 200 | 330 | 420 | POST_comment_comment | 410 | 530 | 3400 | POST_comment_response | 360 | 530 | 3400 | POST_thread | 260 | 400 | 460 | auto_auth | 210 | 210 | 210 |
| No. of clients = 68 req/s = 5.60 Methods | median response time | 95% | 99% |
---|
DELETE_comment | 270 | 1700 | 1800 | DELETE_thread | 190 | 240 | 260 | GET_comment_list | 160 | 260 | 350 | GET_thread | 230 | 300 | 390 | GET_thread_list | 400 | 710 | 780 | PATCH_comment | 310 | 510 | 1800 | PATCH_thread | 210 | 300 | 440 | POST_comment_comment | 410 | 1800 | 1900 | POST_comment_response | 370 | 530 | 1900 | POST_thread | 260 | 390 | 440 | auto_auth | 280 | 310 | 310 |
|
No. of clients = 96 req/s = 7.70 Methods | median response time | 95% | 99% |
---|
DELETE_comment | 280 | 970 | 2800 | DELETE_thread | 190 | 240 | 370 | GET_comment_list | 160 | 270 | 350 | GET_thread | 230 | 310 | 390 | GET_thread_list | 450 | 760 | 830 | PATCH_comment | 330 | 1500 | 2900 | PATCH_thread | 210 | 330 | 450 | POST_comment_comment | 420 | 570 | 3000 | POST_comment_response | 370 | 600 | 2900 | POST_thread | 260 | 360 | 450 | auto_auth | 210 | 210 | 210 |
| No. of clients = 96 req/s = 7.30 Methods | median response time | 95% | 99% |
---|
DELETE_comment | 270 | 360 | 1800 | DELETE_thread | 190 | 240 | 300 | GET_comment_list | 160 | 260 | 360 | GET_thread | 240 | 300 | 400 | GET_thread_list | 410 | 720 | 790 | PATCH_comment | 310 | 440 | 1800 | PATCH_thread | 210 | 300 | 420 | POST_comment_comment | 410 | 480 | 1900 | POST_comment_response | 370 | 510 | 1900 | POST_thread | 260 | 330 | 420 | auto_auth | 210 | 220 | 220 |
|
No. of clients = 144 req/s = 10.90 Methods | median response time | 95% | 99% |
---|
DELETE_comment | 280 | 3100 | 3300 | DELETE_thread | 190 | 250 | 570 | GET_comment_list | 160 | 290 | 370 | GET_thread | 240 | 340 | 450 | GET_thread_list | 490 | 820 | 940 | PATCH_comment | 320 | 550 | 3300 | PATCH_thread | 210 | 310 | 420 | POST_comment_comment | 420 | 780 | 3700 | POST_comment_response | 370 | 580 | 3500 | POST_thread | 260 | 380 | 460 | auto_auth | 1300 | 1400 | 1400 |
| No. of clients = 144 req/s = 11.20 Methods | median response time | 95% | 99% |
---|
DELETE_comment | 280 | 1600 | 2100 | DELETE_thread | 190 | 260 | 340 | GET_comment_list | 160 | 270 | 360 | GET_thread | 240 | 330 | 460 | GET_thread_list | 420 | 740 | 810 | PATCH_comment | 330 | 1800 | 2100 | PATCH_thread | 210 | 330 | 450 | POST_comment_comment | 420 | 710 | 2200 | POST_comment_response | 380 | 1200 | 2100 | POST_thread | 260 | 410 | 450 | auto_auth | 210 | 220 | 220 |
|
No. of clients = 192 req/s = 14.40 Methods | median response time | 95% | 99% |
---|
DELETE_comment | 290 | 410 | 3600 | DELETE_thread | 200 | 260 | 340 | GET_comment_list | 170 | 290 | 390 | GET_thread | 250 | 370 | 490 | GET_thread_list | 500 | 840 | 1000 | PATCH_comment | 330 | 510 | 3100 | PATCH_thread | 220 | 350 | 440 | POST_comment_comment | 430 | 2900 | 3700 | POST_comment_response | 380 | 620 | 3500 | POST_thread | 270 | 370 | 440 | auto_auth | 260 | 260 | 260 |
| No. of clients = 192 req/s = 16.60 Methods | median response time | 95% | 99% |
---|
DELETE_comment | 280 | 590 | 2200 | DELETE_thread | 190 | 260 | 320 | GET_comment_list | 170 | 280 | 370 | GET_thread | 250 | 360 | 500 | GET_thread_list | 440 | 760 | 850 | PATCH_comment | 320 | 530 | 2300 | PATCH_thread | 210 | 310 | 450 | POST_comment_comment | 430 | 680 | 2500 | POST_comment_response | 380 | 560 | 2300 | POST_thread | 270 | 400 | 450 | auto_auth | 190 | 230 | 230 |
|
No. of clients = 240 req/s = 17.90 Methods | median response time | 95% | 99% |
---|
DELETE_comment | 290 | 560 | 4300 | DELETE_thread | 190 | 300 | 530 | GET_comment_list | 170 | 350 | 510 | GET_thread | 260 | 450 | 710 | GET_thread_list | 630 | 1200 | 1800 | PATCH_comment | 340 | 700 | 3700 | PATCH_thread | 220 | 350 | 470 | POST_comment_comment | 450 | 1600 | 4400 | POST_comment_response | 390 | 680 | 4500 | POST_thread | 270 | 400 | 490 | auto_auth | 230 | 230 | 230 |
| No. of clients = 240 req/s = 19.50 Methods | median response time | 95% | 99% |
---|
DELETE_comment | 300 | 2100 | 2800 | DELETE_thread | 200 | 280 | 340 | GET_comment_list | 170 | 300 | 410 | GET_thread | 260 | 420 | 590 | GET_thread_list | 480 | 810 | 970 | PATCH_comment | 340 | 710 | 2600 | PATCH_thread | 220 | 340 | 500 | POST_comment_comment | 450 | 2200 | 2700 | POST_comment_response | 390 | 820 | 2700 | POST_thread | 270 | 410 | 490 | auto_auth | 200 | 220 | 220 |
|
No. of clients = 288 req/s = 22.80 Methods | median response time | 95% | 99% |
---|
DELETE_comment | 310 | 810 | 3700 | DELETE_thread | 200 | 290 | 450 | GET_comment_list | 180 | 340 | 450 | GET_thread | 280 | 470 | 640 | GET_thread_list | 660 | 1200 | 1500 | PATCH_comment | 350 | 630 | 3800 | PATCH_thread | 220 | 340 | 450 | POST_comment_comment | 460 | 850 | 3900 | POST_comment_response | 400 | 650 | 3900 | POST_thread | 270 | 410 | 490 | auto_auth | 220 | 250 | 250 |
| No. of clients = 288 req/s = 22.40 Methods | median response time | 95% | 99% |
---|
DELETE_comment | 300 | 2100 | 2800 | DELETE_thread | 200 | 280 | 520 | GET_comment_list | 180 | 320 | 450 | GET_thread | 270 | 450 | 640 | GET_thread_list | 530 | 910 | 1200 | PATCH_comment | 350 | 540 | 2500 | PATCH_thread | 230 | 350 | 460 | POST_comment_comment | 460 | 2200 | 2800 | POST_comment_response | 410 | 670 | 2800 | POST_thread | 280 | 420 | 480 | auto_auth | 200 | 220 | 220 |
|
No. of clients = 336 req/s = 27.70 Methods | median response time | 95% | 99% |
---|
DELETE_comment | 320 | 2800 | 4800 | DELETE_thread | 210 | 300 | 490 | GET_comment_list | 190 | 410 | 600 | GET_thread | 300 | 590 | 880 | GET_thread_list | 860 | 2100 | 3700 | PATCH_comment | 360 | 900 | 4600 | PATCH_thread | 240 | 390 | 490 | POST_comment_comment | 490 | 850 | 4500 | OST_comment_response | 420 | 930 | 4700 | POST_thread | 280 | 430 | 590 | auto_auth | 250 | 280 | 280 |
| No. of clients = 336 req/s = 26.30 Methods | median response time | 95% | 99% |
---|
DELETE_comment | 310 | 2300 | 3400 | DELETE_thread | 210 | 290 | 420 | GET_comment_list | 190 | 360 | 510 | GET_thread | 290 | 550 | 810 | GET_thread_list | 600 | 1100 | 1400 | PATCH_comment | 360 | 1100 | 3200 | PATCH_thread | 240 | 400 | 560 | POST_comment_comment | 470 | 1500 | 4000 | OST_comment_response | 420 | 750 | 3800 | POST_thread | 280 | 420 | 510 | auto_auth | 210 | 240 | 240 |
|
No. of clients = 384 req/s = 16.30 (reached server capacity) Methods | median response time | 95% | 99% |
---|
DELETE_comment | 6000 | 13000 | 15000 | DELETE_thread | 4600 | 10000 | 14000 | GET_comment_list | 3200 | 8700 | 11000 | GET_thread | 3400 | 8800 | 12000 | GET_thread_list | 7100 | 12000 | 14000 | PATCH_comment | 4300 | 11000 | 15000 | PATCH_thread | 3700 | 10000 | 13000 | POST_comment_comment | 5600 | 13000 | 19000 | POST_comment_response | 5400 | 12000 | 15000 | POST_thread | 3400 | 8800 | 12000 | auto_auth | 2600 | 3500 | 3500 |
| No. of clients = 384 req/s = 31.70 Methods | median response time | 95% | 99% |
---|
DELETE_comment | 340 | 1100 | 4500 | DELETE_thread | 210 | 350 | 680 | GET_comment_list | 200 | 430 | 670 | GET_thread | 330 | 740 | 1100 | GET_thread_list | 770 | 1800 | 2700 | PATCH_comment | 380 | 860 | 4200 | PATCH_thread | 250 | 400 | 570 | POST_comment_comment | 500 | 1300 | 4600 | POST_comment_response | 440 | 910 | 4100 | POST_thread | 290 | 450 | 640 | auto_auth | 210 | 230 | 230 |
|
No. of clients = 480 req/s = 5.00 (reached server capacity) Methods | median response time | 95% | 99% |
---|
DELETE_comment | 12000 | 26000 | 40000 | DELETE_thread | 10000 | 26000 | 42000 | GET_comment_list | 8400 | 22000 | 30000 | GET_thread | 9400 | 23000 | 33000 | GET_thread_list | 12000 | 23000 | 30000 | PATCH_comment | 11000 | 25000 | 32000 | PATCH_thread | 10000 | 23000 | 30000 | POST_comment_comment | 12000 | 24000 | 30000 | POST_comment_response | 11000 | 25000 | 32000 | POST_thread | 9000 | 21000 | 30000 | auto_auth | 4400 | 8100 | 8200 |
| No. of clients = 480 req/s = 20.40 (reached server capacity) Methods | median response time | 95% | 99% |
---|
DELETE_comment | 5900 | 12000 | 15000 | DELETE_thread | 5400 | 10000 | 13000 | GET_comment_list | 4600 | 9700 | 12000 | GET_thread | 5000 | 9900 | 14000 | GET_thread_list | 8600 | 13000 | 15000 | PATCH_comment | 5800 | 12000 | 14000 | PATCH_thread | 5100 | 10000 | 13000 | POST_comment_comment | 6200 | 12000 | 15000 | POST_comment_response | 5700 | 11000 | 14000 | POST_thread | 4700 | 9300 | 12000 | auto_auth | 3300 | 5400 | 5500 |
|
With Child Count:
Without Child Count: