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 21 Next »

Background:

In reference to  MA-2678 - Getting issue details... STATUS ; we have changed forums implementation with following details (for reference; see PR#192):

  1. Changed post/response/comment behaviour to update post's 'last_activity_at' only at time of creation of post and creation of response/comment on a post. Previously post's 'last_activity_at' was being updated for both creation and update.
  2. To calculate 'read' status of a post, used 'last_acitvity_at' instead of 'updated_at'.
  3. To calculate 'unread comment count' for a post, used 'created_at' instead of 'updated_at'.

'unread comment count' was being calculate as:

unread_comment_count = Comment.collection.find(:comment_thread_id => t._id, :author_id => {"$ne" => user.id}, :updated_at => {"$gte" => read_dates[thread_key]}).count

and had a compound index against it
index({_type: 1, comment_thread_id: 1, author_id: 1, updated_at: 1})
 

With new implementation:

unread_comment_count = Comment.collection.find(:comment_thread_id => t._id, :author_id => {"$ne" => user.id}, :created_at => {"$gte" => read_dates[thread_key]}).count

So, we removed index
index({_type: 1, comment_thread_id: 1, author_id: 1, updated_at: 1})

and added a new one

index({comment_thread_id: 1, author_id: 1, created_at: 1})

Results:

The load tests were run on 4x c4.2xlarge instances.

The results of load tests below show differences between the old and new implementation. The two set of results looks quite similar except when it reaches "No. of clients = 336"; where there is huge difference between old and new percentiles as well as sudden rise in percentile for both old and new index with respect to "No. of clients = 224". For all the next tests (i.e. No. of clients = 460, No. of clients = 510, No. of clients = 578), the difference between old and new percentile is minimised and the new index results have lower percentile for most of the endpoints.

I have captured new relic charts too; permaLink_old_index with average rpm = 1.86k and permaLink_new_index with average rpm = 1.81k

 

Old Index

New Index

 
No. of clients = 48
req/s = 9.4
Methodsmedian response time95%99%

DELETE_comment

250

3101200

DELETE_thread

160

190200

GET_comment_list

150190310

GET_thread

140180220

GET_thread_list

160370520

PATCH_comment

2303601200

PATCH_thread

190240370

POST_comment_comment

290360430

POST_comment_response

250310450

POST_thread

160190200

auto_auth

200250250
No. of clients = 48
req/s = 8.9
Methodsmedian response timemedian response time95%95%99%99%

DELETE_comment

250270300470480520

DELETE_thread

170160210300230310

GET_comment_list

150160200260320350

GET_thread

150150190250280310

GET_thread_list

170190360370520530

PATCH_comment

220240320400410460

PATCH_thread

180190360300330330

POST_comment_comment

290310340510490680

POST_comment_response

250260300450390520

POST_thread

160160200250370340

auto_auth

220210230230230230


 
No. of clients = 96
req/s = 18.5
Methodsmedian response time95%99%
DELETE_comment

270

340390
DELETE_thread170230330
GET_comment_list170210330
GET_thread160200250
GET_thread_list190440610
PATCH_comment240330360
PATCH_thread200260350
POST_comment_comment310380470
POST_comment_response260330440
POST_thread170210340
auto_auth180220220


No. of clients = 96
req/s = 18.6
Methodsmedian response timemedian response time95%95%99%99%
DELETE_comment270280340360360980
DELETE_thread170170220230230290
GET_comment_list160160210220340400
GET_thread160160200210270340
GET_thread_list190190460460600640
PATCH_comment220230310310340460
PATCH_thread1902002602803501000
POST_comment_comment300310370410480680
POST_comment_response260260330350420620
POST_thread170170210210340330
auto_auth180210230220230220


 
No. of clients = 162
req/s = 31
Methodsmedian response time95%99%

DELETE_comment

320400490

DELETE_thread

190240280

GET_comment_list

190250370

GET_thread

190250340

GET_thread_list

220520660

PATCH_comment

270360390

PATCH_thread

230310370

POST_comment_comment

350450540

POST_comment_response

300400490

POST_thread

190240340

auto_auth

200200200


No. of clients = 162
req/s = 31.6
Methodsmedian response timemedian response time95%95%99%99%

DELETE_comment

310320410420590530

DELETE_thread

190190240230250250

GET_comment_list

190190250250380380

GET_thread

180180250250360340

GET_thread_list

220210530520670660

PATCH_comment

2602503803601400430

PATCH_thread

220230280310400370

POST_comment_comment

340340450470540620

POST_comment_response

290290400400510550

POST_thread

190190240230370360

auto_auth

210200220200220200


 
No. of clients = 240
req/s = 44.6
Methodsmedian response time95%99%

DELETE_comment

400600700

DELETE_thread

240320530

GET_comment_list

240350480

GET_thread

240360470

GET_thread_list

270630800

PATCH_comment

330510600

PATCH_thread

290420530

POST_comment_comment

420640820

POST_comment_response

360560730

POST_thread

240310440

auto_auth

210210210


No. of clients = 240
req/s = 45.40
Methodsmedian response timemedian response time95%95%99%99%

DELETE_comment

39041065069013001100

DELETE_thread

240230370280430340

GET_comment_list

230240350350500480

GET_thread

230240370370600520

GET_thread_list

270270640630850790

PATCH_comment

3003104904801200610

PATCH_thread

280290460470640630

POST_comment_comment

4104306706601000970

POST_comment_response

360360560600860850

POST_thread

230230300310500430

auto_auth

190210220220220220


 
 
No. of clients = 270
req/s = 51.1
Methodsmedian response time95%99%

DELETE_comment

560790010000

DELETE_thread

2806205200

GET_comment_list

30031004000

GET_thread

31034005000

GET_thread_list

33030004200

PATCH_comment

40017006500

PATCH_thread

38051006300

POST_comment_comment

560790010000

POST_comment_response

47061008200

POST_thread

29029003900
auto_auth320320320
 
 
No. of clients = 300
req/s = 48
Methodsmedian response time95%99%

DELETE_comment

160046005900

DELETE_thread

46016002500

GET_comment_list

48013001900

GET_thread

56021002900

GET_thread_list

53017002500

PATCH_comment

80028003500

PATCH_thread

71027003600

POST_comment_comment

140043005500

POST_comment_response

100036004800

POST_thread

43011001700
auto_auth240250250
 
No. of clients = 336
req/s = 53
Methodsmedian response time95%99%

DELETE_comment

250055006500

DELETE_thread

98023002900

GET_comment_list

80021002700

GET_thread

92027003300

GET_thread_list

85024003300

PATCH_comment

150039005000

PATCH_thread

120034004100

POST_comment_comment

230054007000

POST_comment_response

170044005900

POST_thread

74020002700

auto_auth

33013001300


No. of clients = 336
req/s = 54.3
Methodsmedian response timemedian response time95%95%99%99%

DELETE_comment

15005300920096001200011000

DELETE_thread

47023004100460067005100

GET_comment_list

51018005000370068004500

GET_thread

59021006500480099005700

GET_thread_list

58018004900390068004800

PATCH_comment

81035007600640011009700

PATCH_thread

79029005400630078007300

POST_comment_comment

13004800930093001200011000

POST_comment_response

1000370077007800100009600

POST_thread

47017004600350064004000

auto_auth

320710320830320830


No. of clients = 336
req/s = 40.2
Methodsmedian response time95%99%

DELETE_comment

68001200014000

DELETE_thread

350063006800

GET_comment_list

270049005600

GET_thread

350067007700

GET_thread_list

280052006100

PATCH_comment

5000910011000

PATCH_thread

430082009100

POST_comment_comment

54001200013000

POST_comment_response

5100970012000

POST_thread

260046005200

auto_auth

140016001600
No. of clients = 460
req/s = 44.5
Methodsmedian response time95%99%

DELETE_comment

5600980012000

DELETE_thread

370062007900

GET_comment_list

370061008100

GET_thread

5200980013000

GET_thread_list

370068008600

PATCH_comment

480079009500

PATCH_thread

460073009900

POST_comment_comment

5500930011000

POST_comment_response

5000830010000

POST_thread

350060009200

auto_auth

200026002600


No. of clients = 460
req/s = 49.1
Methodsmedian response timemedian response time95%95%99%99%

DELETE_comment

6100 10000 11000 

DELETE_thread

3500 5700 6400 

GET_comment_list

3000 5000 5700 

GET_thread

4200 7100 8700 

GET_thread_list

3100 5300 6200 

PATCH_comment

4400 7800 8600 

PATCH_thread

4100 6900 7600 

POST_comment_comment

5700 9900 11000 

POST_comment_response

4800 8500 10000 

POST_thread

3000 4800 5500 

auto_auth

1700 2700 2700 


 
No. of clients = 510
req/s = 32.4
Methodsmedian response time95%99%

DELETE_comment

77001500027000

DELETE_thread

54001200015000

GET_comment_list

63001400031000

GET_thread

86001900036000

GET_thread_list

64001400032000

PATCH_comment

70001400025000

PATCH_thread

69001600035000

POST_comment_comment

74001500036000

POST_comment_response

70001400026000

POST_thread

60001100032000

auto_auth

290040004400


No. of clients = 510
req/s = 33.9
Methodsmedian response timemedian response time95%95%99%99%

DELETE_comment

7600 14000 19000 

DELETE_thread

6700 11000 14000 

GET_comment_list

6700 11000 16000 

GET_thread

9400 16000 22000 

GET_thread_list

7000 11000 17000 

PATCH_comment

6900 12000 16000 

PATCH_thread

6900 12000 21000 

POST_comment_comment

7600 14000 19000 

POST_comment_response

7200 13000 18000 

POST_thread

6700 11000 15000 

auto_auth

2400 3200 3300 


 
No. of clients = 578
req/s = 26.70
Methodsmedian response time95%99%

DELETE_comment

95002600032000

DELETE_thread

87002500032000

GET_comment_list

86002200031000

GET_thread

130002700040000

GET_thread_list

86002200032000

PATCH_comment

88002200032000

PATCH_thread

88002000029000

POST_comment_comment

92002400031000

OST_comment_response

93002400032000

POST_thread

83002000032000

auto_auth

360052005500


No. of clients = 578
req/s = 40.2
Methodsmedian response timemedian response time95%95%99%99%

DELETE_comment

9100 24000 32000 

DELETE_thread

8500 22000 26000 

GET_comment_list

8100 22000 32000 

GET_thread

12000 26000 40000 

GET_thread_list

8300 22000 32000 

PATCH_comment

8300 23000 31000 

PATCH_thread

8000 23000 28000 

POST_comment_comment

9000 24000 32000 

OST_comment_response

8500 23000 32000 

POST_thread

8300 22000 32000 

auto_auth

4100 5100 5400 


 
  • No labels