2014-02-08 1 views
1

Я использовал этот сайт в течение многих лет, но это мой первый вопрос, задающий вопрос, поэтому не стесняйтесь исправить меня, если я не буду сделай это правильно.Uncaught exception «MongoCursorException» с сообщением «localhost: 27017: DBClientBase :: findN: транспортная ошибка

В последнее время мы сталкиваемся с этой проблемой. У нас есть mongos, работающие на одном сервере Centos5, подключающемся к серверам mongodb с распределенным сервером replicaset с 2.4.9.

В последнее время мы сделали много оптимизации, которая увеличила нашу пропускную способность, и, хотя эта проблема часто случалась раньше, теперь она становится невыносимой.

После определенного количества успешных запросов на чтение php просто выдает ошибки и выдает одну и ту же ошибку снова и снова. Через некоторое время он может восстановиться. Это похоже на сервер на основе приложения и не влияет на все серверы приложений одновременно.

Если я pkill mongo и запустил новое соединение mongos, это обычно фиксируется. Любая идея, по которой нужно копать или, может быть, указатели, ценится, спасибо. это ошибка, мы получим:

Fatal error: Uncaught exception 'MongoCursorException' with message 'localhost:27017: DBClientBase::findN: transport error: internal-mongo-r1-d2-dev.myserver.com:27017 ns: admin.$cmd query: { setShardVersion: "", init: true, configdb: "internal-mongo-c1-dev.myserver.com:27019,internal-mongo-c2-dev.myserver.com:27019,internal-mongo-c3-dev.myserver.com:27019", serverID: ObjectId('52f57ce26ca6543144b077e5'), authoritative: true }' in /mnt/home/webapps/cgs-sys/releases/20140207163554/includes/db/mongo/mongo.inc:185 
Stack trace: 
#0 /mnt/home/webapps/cgs-sys/releases/20140207163554/includes/db/mongo/mongo.inc(185): MongoCursor->rewind() 
#1 /mnt/home/webapps/cgs-sys/releases/20140207163554/includes/db/data.inc(62): MongoCG::get(Array) 
#2 /mnt/home/webapps/cgs-sys/releases/20140207163554/includes/data/session/savedsession.inc(30): Data::select('mongo', 'coll_saved_sess...', '_id', 'updated_ss', Array, Array) 
#3 /mnt/home/webapps/cgs-sys/releases/20140207163554/includes/data/session/savedsession.inc(20): SavedSession::select(Array) 
#4 /mnt/home/webapps/cgs-sys/releases/20140207163554/includes/access/phpsession.inc(32): SavedSession::get_one('fl0uq0nqjbbo4iq...') 
#5 [internal function]: PhpSession::read('fl0uq0nqjbbo4iq...') 
#6 /mnt/home/webapps/cgs-sys/releases/20140207163554/includes/access/phpsession.inc(16): session_start() 
#7 /mnt/home/webapps/cgs-sys/releases/20140207163554/includes/allinc.inc(15): PhpSession::start() 
#8 /mnt/home/webapps/cgs-sys/releases/20140207163554/p.php(4): include_once('/mnt/home/webap...') 
#9 {main} 
    thrown in /mnt/home/webapps/cgs-sys/releases/20140207163554/includes/db/mongo/mongo.inc on line 185 
+0

Когда это произойдет, как выглядит ваша система? Похоже, что вы выполняете разделение или перенос, который пытается совершить, и он блокирует в течение длительного времени. Если это повторится, взгляните на использование ЦП и дискового ввода-вывода, запустите db.currentOp() и посмотрите, можно ли где-нибудь найти pallup или stall (а затем обновить эти данные здесь). – leif

+0

Ну, это происходит под нагрузкой, в течение этого времени CPU обычно работает высоко, однако место в коде, где это происходит, происходит там, где я пытаюсь читать из базы данных, я пытался исправить эту проблему в течение многих часов, и я скоро опубликует обновление, спасибо за просмотр –

ответ

0

Есть довольно много ссылок вокруг подобных ошибок и общее предложение является первым, что нужно смотреть на на TCP KeepAlive.

Помимо других соображений, вы также можете посмотреть настройки keepalive в вашем подключении к драйверу.

Некоторые ссылки, как место, чтобы начать:

https://www.google.com.au/search?q=mongodb+transport+error

https://groups.google.com/forum/#!topic/mongodb-user/eod_QH9-VIY

https://jira.mongodb.org/browse/SERVER-3446

https://www.google.com.au/search?q=mongodb+transport+error

1

просто хотел сделать быстро следить.

После того, как мы выяснили, что у нас была низкая установка «открытых файлов» на серверах mongod, которые были исправлены, и эти ошибки исчезли.