Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 40 Next »

MA-1099 - Getting issue details... STATUS

 

Endpoints: 

 


Notes and considerations:

Thread and Comment pool:

    Various methods of select post data were considered.

  • Selecting threads from a smaller pool or selecting the same thread
    • Rather than getting the entire list of 
  • Retrieving the list of thread ids when starting locust. 
    • This was my initial 

 

 Staff vs. Normal User:

    Using users with staff access was thrown into consideration as it would be make some of the permissions a bit more difficult for some discussion forums actions such as editing the body of a thread. Some tests were ran to see if there was a difference. No difference was found the tests that were designed to check for a difference. 

    


/threads/

GET: 

 Invalid: Old test that was invalid due to the way mongo is set up

Using 10 locust users with min/max time of 1000/2000ms, GET requests for sent for either a single thread or randomly from a selection of 10% of the threads in a course. This was tested against a sandbox.

  • It seems like getting a random thread vs. the same thread does not make a reliably noticeable difference.
  • As number of posts in the database increase, the response time also increases.
  • Number of posts in a course does not seem to be matter for GETting a post. 

Update: This conclusion is invalid as the sandbox does not have the proper indexes. 

 

Approx Total PostsName# requests# failsMedianAverageMinMaxContent Size# reqs/sec
1000GET a random Thread out of 1000 Posts26710140150125.5698204410.569906211785.8
1000GET a single Thread out of 1000 Posts22620140151126.8491745337.106943111785.9
11000GET a random Thread out of 10000 Posts15220180196164.470911447.613000911786
11000GET a single Thread out of 10000 Posts15930180198164.4868851480.930805211785.8
11100GET a random Thread out of 100 Posts5420180193164.2448902419.183015811785.9
11100GET a single Thread out of 100 Posts7380180199165.0490761434.263944611786
12100GET a random Thread out of 1000 Posts6830180204166.1930084489.537954311785.6
12100GET a single Thread out of 1000 Posts10490180202169.2481041443.414926511786
13100GET a random Thread out of 1000 Posts14730180209171.40197751157.29904211786.1
13100GET a single Thread out of 1000 Posts13170180204170.7370281510.493993811785.8
14100GET a random Thread out of 1000 Posts8550190209175.9641171468.723058711786
14100GET a single Thread out of 1000 Posts75570190213173.6099721970.30401211785.1

POST: 

 Missing some data: After 1,000,000 posts in 24 hours, the response time remain constant.

Unfortunately locust ran into a calculation error when running a post test so there is no table data. After 1,000,000 posts in 24 hours, the response time remain constant. This was tested against https://courses-loadtest.edx.org/ 

/threads/{thread_id}

GET: 

Waiting on Loadtest env to get meaningful results. Refer to /threads/get

PATCH: 

 

 Patch events for the boolean values took more or less the same amount of time.
This was tested against a t2.large sandbox. 

 

TypeName# requests# failsMedianAverageMinMaxContent Size# reqs/sec
PATCHabuse_flagged1814030031596.833944321307.78193520092.5
PATCHfollowing1847030031497.836017611730.39698619391.9
PATCHvoted1875031031997.416877751427.901032104

1.3

 Patch events for being a Staff vs. Non-staff user did not make a difference.
Using 2 locust user intentionally split between staff and non-staff tasks, PATCH requests were sent with a 500ms wait time. This was tested against a t2.large sandbox. 

 

Namereqs#failsAvgMinMaxMedianreq/s
PATCHabuse_flag_thread330(0.00%)3322444703300
PATCHfollowing_thread1200(0.00%)3262414563300.2
PATCHstaff_abuse_flag_thread400(0.00%)3202404023300
PATCHstaff_following_thread1100(0.00%)3332394823300
PATCHstaff_vote_on_thread17740(0.00%)339229176073301.1
PATCHvote_on_thread17870(0.00%)331226145993301
 Different body sized edits did not seem to make a difference in response times.
Namereqs#failsAvgMinMaxMedianreq/s
PATCHabuse_flag_thread160(0.00%)1621172121500
PATCHedit_thread_with_10000char500(0.00%)1991514241900.1
PATCHedit_thread_with_1000char610(0.00%)23413837071700.1
PATCHedit_thread_with_250char540(0.00%)1781364221600.1
PATCHedit_thread_with_4char570(0.00%)1831383311700.1
PATCHedit_thread_with_5000char570(0.00%)1881413411800.1
PATCHfollowing_thread420(0.00%)1681303371600.2
PATCHvote_on_thread6980(0.00%)1601146521501.1

DELETE:

 DELETE will be best tested with the other endpoints

For every DELETE thread, we POST a Thread and then GET a thread from the thread pool. This was tested against a t2.large.sandbox.

Namereqs#failsAvgMinMaxMedianreq/s
DELETEDELETE_thread3051(0.33%)2031373521903
GETGET_thread_list3060(0.00%)1901544201702.9
POSTPOST_thread3060(0.00%)1271022771103

/comments/

GET: 

 mark_as_read and page did not seem to affect the response time at all.
Using 10 locust users with min/max time of 1000/2000ms, GET requests for sent for 1 of 10 threads with 100 responses in increasing increments of 100 responses, each with single comment.  The page_size seemed to be the parameter that affected the response time. This was tested against a t2.large sandbox.

 

TypeName# requests# failsMedianAverageMinMaxContent Size# reqs/sec
GETpage_size=100552012001212689.62907792079.3230531677470.6
GETpage_size=75588010001053570.69206241957.837821258580.7
GETpage_size=505520900927459.97500421813.49206839581.1
GETpage_size=255250790810345.99900251692.13295420581
GETpage_size=15570680710237.98203471673.28906118330.8
 None of the parameters affect the response time. As comments on a response increases, so does the response time.
Using 10 locust users with min/max time of 1000/2000ms, GET requests for sent for 1 of 10 threads with 1 response with comments increasing in increments of 50.  This was tested against a t2.large sandbox.

 

TypeName# requests# failsMedianAverageMinMaxContent Size# reqs/sec
GETcomments=5003520170018221361.5820413062.2570514068320.1
GETcomments=4503950160017101244.3480493462.923053662320.3
GETcomments=4003870140015521093.0590634270.4479693256320.1
GETcomments=350394013001394972.35107422612.5550272850320.4
GETcomments=300379011001233827.77094842370.137932444320.2
GETcomments=25035309701056708.37497712795.85292038320
GETcomments=2003520830943583.65988732230.6971551632320.1
GETcomments=1503680680785441.07198722042.1819691226320.2
GETcomments=1003420540658323.15111161866.328001820320.2
GETcomments=503900390512194.78607182818.300009414320.3

POST: 

POST should be similar to POSTing threads

/comments/comment_id

PATCH: 

 As with PATCHing a thread, body edit size did not seem to matter. Boolean patches also seemed to be the same.
Namereqs#failsAvgMinMaxMedianreq/s
GETGET_comment_list9160(0.00%)2601196432403
GETGET_thread_list9160(0.00%)2751875712602.9
PATCHabuse_flag_comment470(0.00%)2711595132600.4
PATCHedit_comment_with_10000char600(0.00%)3072054983000.2
PATCHedit_comment_with_1000char570(0.00%)2641654482500.2
PATCHedit_comment_with_250char710(0.00%)2641604672500.3
PATCHedit_comment_with_4char760(0.00%)2651664692500.4
PATCHedit_comment_with_5000char600(0.00%)2931955972800.1
PATCHvote_on_comment5470(0.00%)2831306412701.5

 

DELETE: 

DELETE is best tested with the other endpoints. For every comment delete, we POST a thread, GET a random thread, and then DELETE that random thread.

  • No labels