目錄

簡介

問題

解決方案

簡介

本檔案將說明在CloudCenter Orchestrator(CCO)上出現「connection timed out」錯誤時如何進行疑難排解。

問題

為CCO配置MongoDB後，當它無法與MongoDB正確連線時，它可能會失敗。此問題可能是由於許多因素造成的，但前面提到的情況是埠被IPTABLES阻止。

要診斷此問題，建議檢視日誌檔案並檢查錯誤的實際原因。此處錯誤是由連線超時引起的。

2017-05-25 17:35:53,340 ERROR context.ContextLoader [localhost-startStop-1]  - Context initialization failed

com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches ReadPreferenceServerSelector{readPreference=primary}. Client view of cluster state is {type=UNKNOWN, servers=[{address=localhost:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, caused by {java.net.ConnectException: Connection refused (Connection refused)}}]

at com.mongodb.connection.BaseCluster.createTimeoutException(BaseCluster.java:369)

at com.mongodb.connection.BaseCluster.selectServer(BaseCluster.java:101)

at com.mongodb.binding.ClusterBinding$ClusterBindingConnectionSource.

(ClusterBinding.java:75)

at com.mongodb.binding.ClusterBinding$ClusterBindingConnectionSource.

(ClusterBinding.java:71)

at com.mongodb.binding.ClusterBinding.getReadConnectionSource(ClusterBinding.java:63)

at com.mongodb.operation.OperationHelper.withConnection(OperationHelper.java:210)

at com.mongodb.operation.FindOperation.execute(FindOperation.java:480)

at com.mongodb.operation.FindOperation.execute(FindOperation.java:77)

at com.mongodb.Mongo.execute(Mongo.java:773)

at com.mongodb.Mongo$2.execute(Mongo.java:760)

at com.mongodb.DBCursor.initializeCursor(DBCursor.java:851)

at com.mongodb.DBCursor.hasNext(DBCursor.java:152)

at com.hazelcast.spring.mongodb.MongoMapStore.loadAllKeys(MongoMapStore.java:142)

at com.hazelcast.spring.mongodb.MongoMapStore.loadAllKeys(MongoMapStore.java:47)

at com.hazelcast.map.impl.MapStoreWrapper.loadAllKeys(MapStoreWrapper.java:119)

at com.hazelcast.map.impl.mapstore.BasicMapStoreContext.loadAllKeys(BasicMapStoreContext.java:179)

at com.hazelcast.map.impl.MapKeyLoader.sendKeysInBatches(MapKeyLoader.java:249)

at com.hazelcast.map.impl.MapKeyLoader.access$200(MapKeyLoader.java:65)

at com.hazelcast.map.impl.MapKeyLoader$1.call(MapKeyLoader.java:152)

at com.hazelcast.map.impl.MapKeyLoader$1.call(MapKeyLoader.java:149)

at java.util.concurrent.FutureTask.run(FutureTask.java:266)

at com.hazelcast.util.executor.CompletableFutureTask.run(CompletableFutureTask.java:57)

at com.hazelcast.util.executor.CachedExecutorServiceDelegate$Worker.run(CachedExecutorServiceDelegate.java:209)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

at java.lang.Thread.run(Thread.java:748)

at com.hazelcast.util.executor.HazelcastManagedThread.executeRun(HazelcastManagedThread.java:76)

at com.hazelcast.util.executor.HazelcastManagedThread.run(HazelcastManagedThread.java:92)

應用程式版本

CloudCenter

4.6.x / 4.7.x / 4.8.0

解決方案

在IPTABLES中為MongoDB新增一個異常並執行以下命令：

# iptables -A INPUT -ptcp --dport 27017 -j ACCEPT

然後重新啟動MongoDB服務並重新啟動tomcat服務：

# /etc/init.d/mongod restart

# /etc/init.d/tomcat restart