我想了解mongodb讀取語義。根據文檔,除非您更改readpreferences,否則它始終是副本集中的主服務器。mongodb readpreference和讀取語義
我的設置: 的Linux VM:4GB內存,1個核心,在相同的虛擬機上運行3個蒙戈實例(!我知道這是一個糟糕的設置,但是這就是我從OPS得到了現在)
我只是監控內存使用情況,日誌等,而我從Java驅動程序運行以下mongo查詢。
這是我看到:
ReadPreference.PrimaryPreferred:
頂部
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
17874(primary) mongod 20 0 43.0g 1.3g 1.1g S 14.3 36.0 109:06.71 mongod
18048(secondary-1) mongod 20 0 42.7g 690m 88m S 0.3 18.0 28:45.09 mongod
18207(secondary-2) mongod 20 0 42.7g 641m 60m S 0.3 16.7 28:53.13 mongod
日誌
主要-1
Fri Aug 2 21:35:39.416 [initandlisten] connection accepted from 10.10.1.57:54306 #11927 (40 connections now open)
Fri Aug 2 21:44:16.332 [initandlisten] connection accepted from 10.10.1.57:54376 #11963 (41 connections now open)
Fri Aug 2 21:44:16.348 [initandlisten] connection accepted from 10.10.1.57:54377 #11964 (42 connections now open)
Fri Aug 2 21:44:16.414 [initandlisten] connection accepted from 10.10.1.57:54380 #11965 (43 connections now open)
二次-1
Fri Aug 2 20:03:43.066 [conn11270] end connection 10.10.1.57:53547 (20 connections now open)
Fri Aug 2 20:03:43.066 [conn11271] end connection 10.10.1.57:53551 (19 connections now open)
Fri Aug 2 21:44:16.331 [initandlisten] connection accepted from 10.10.1.57:54374 #11776 (19 connections now open)
Fri Aug 2 21:44:16.350 [initandlisten] connection accepted from 10.10.1.57:54378 #11777 (20 connections now open)
二次-2
Fri Aug 2 20:03:43.065 [conn11271] end connection 10.10.1.57:53552 (20 connections now open)
Fri Aug 2 20:03:43.066 [conn11270] end connection 10.10.1.57:53549 (19 connections now open)
Fri Aug 2 21:44:16.331 [initandlisten] connection accepted from 10.10.1.57:54375 #11776 (19 connections now open)
Fri Aug 2 21:44:16.352 [initandlisten] connection accepted from 10.10.1.57:54379 #11777 (20 connections now open)
ReadPreference.Secondary:
頂部
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
18048(secondary-1) mongod 20 0 42.7g 1.1g 517m S 7.3 29.2 29:28.00 mongod
17874(primary) mongod 20 0 43.0g 1.0g 777m S 0.3 26.7 112:57.05 mongod
18207(secondary-2) mongod 20 0 42.7g 617m 37m S 0.3 16.1 28:59.08 mongod
日誌
==> mongod_rs0-0.log < ==
Fri Aug 2 22:19:01.056 [conn12118] end connection 10.10.10.201:52558 (34 connections now open)
Fri Aug 2 22:19:01.057 [initandlisten] connection accepted from 10.10.10.201:52564 #12120 (35 connections now open)
==> mongod_rs0-1.log < ==
Fri Aug 2 22:19:04.038 [conn11925] end connection 10.10.10.201:46443 (15 connections now open)
Fri Aug 2 22:19:04.039 [initandlisten] connection accepted from 10.10.10.201:46449 #11927 (16 connections now open)
==> mongod_rs0-2.log < ==
Fri Aug 2 22:19:04.050 [conn11925] end connection 10.10.10.201:37641 (14 connections now open)
Fri Aug 2 22:19:04.050 [initandlisten] connection accepted from 10.10.10.201:37647 #11927 (15 connections now open)
我的問題是:
- 在這兩種情況下,CPU使用率都反映了您的readpreferences,但我不太瞭解日誌。爲什麼當我查詢時它會在每個實例上打開連接?
- 爲什麼小學保持更多沒有。即使readpreference是SecondaryPreferred也是如此。
- 每個實例上的tcpdump都處於活動狀態。其中2人應該閒置,對吧?沒有其他客戶端/進程調用這個集羣。