Spring Mongo配置多個Mongos


由於數據存儲使用MongoDB集群,在對外訪問的時候,地址是Mongos的地址,在使用的過程中沒有發現任何問題,配置如下:

<mongo:mongo  host="${mongodb.hostname}" port="${mongodb.port}">
		<mongo:options connections-per-host="${mongodb.port}"
			threads-allowed-to-block-for-connection-multiplier="${mongodb.threads-allowed-to-block-for-connection-multiplier}"
			connect-timeout="${mongodb.connect-timeout}" max-wait-time="${mongodb.max-wait-time}" auto-connect-retry="${mongodb.auto-connect-retry}"
			socket-keep-alive="${mongodb.socket-keep-alive}" socket-timeout="${mongodb.socket-timeout}" slave-ok="${mongodb.slave-ok}"
			write-number="${mongodb.write-number}" write-timeout="${mongodb.write-timeout}" write-fsync="${mongodb.write-fsync}" />
	</mongo:mongo>

 但是,經過測試幾輪性能測試以后,發現在大並發的時候Mongos機器負載過高,而其他存儲Mongod機器負載很小,於是讓我們解決該問題。

經過幾番分析,原來由以下原因:

1、Mongos、config server、mongod三個進程都部署在一台機子。

2、沒有考慮使用多個Mongos來均攤外部請求。

於是,另外部署幾個Mongos,使用同一個配置庫,問題解決,具體配置如下:

<mongo:mongo  id="mongo"  replica-set="${mongodb.replica-set}">
		<mongo:options connections-per-host="${mongodb.port}"
			threads-allowed-to-block-for-connection-multiplier="${mongodb.threads-allowed-to-block-for-connection-multiplier}"
			connect-timeout="${mongodb.connect-timeout}" max-wait-time="${mongodb.max-wait-time}" auto-connect-retry="${mongodb.auto-connect-retry}"
			socket-keep-alive="${mongodb.socket-keep-alive}" socket-timeout="${mongodb.socket-timeout}" slave-ok="${mongodb.slave-ok}"
			write-number="${mongodb.write-number}" write-timeout="${mongodb.write-timeout}" write-fsync="${mongodb.write-fsync}" />
	</mongo:mongo>

 其中,replica-set格式:ip1:port,ip2:port,...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM