2015-11-22 3 views
0

Я использую compose.io для размещения моего экземпляра Mongo. Мои данные становятся все больше и его стоимость становится непомерно высокой, чтобы оставаться там, поэтому я бы хотел переехать в EC2, где у меня есть $ 750 в кредитах.Mongo работает медленно на Amazon EC2

Проблема:

У меня есть конечная точка для аутентификации пользователя, что я бегу из моего локального хоста:

Когда мой API указывается в базе данных compose.io его ~ 200мс время отклика

Когда мой API наведен на моих новых экземпляров EC2 Mongo его ~ 700 мс время отклика.

(Базы данных представляют собой точные копии)

Pinging экземпляр EC2 составляет ~ 90-100ms.

Коллекции были повторно проиндексированы() и на экземпляре Mongo имеется нулевая нагрузка.

Подробности на экземпляре EC2:

M3.large

100 Резерв IOPS

нулевой трафик/нагрузки.

Я не могу понять, почему Монго так медленно реагирует. Когда я аутентифицировать несколько вещей, которые происходят в базу данных (Вот выход из mongod.log)

2015-11-22T13:44:15.631+0000 [conn6] insert production.transactions query: { method: "POST", resource: "/api/v1.1/login", body: { password: "***********", email: "********" }, timezone: "America/New_York", agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36", _id: ObjectId('5651c6afdc24948b9f2e15e5'), created: new Date(1448199855577), __v: 0 } ninserted:1 keyUpdates:0 numYields:0 locks(micros) w:99 0ms 
2015-11-22T13:44:15.631+0000 [conn6] command production.$cmd command: insert { insert: "transactions", documents: [ { method: "POST", resource: "/api/v1.1/login", body: { password: "***********", email: "*******" }, timezone: "America/New_York", agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36", _id: ObjectId('5651c6afdc24948b9f2e15e5'), created: new Date(1448199855577), __v: 0 } ], ordered: false, writeConcern: { w: 1 } } keyUpdates:0 numYields:0 locks(micros) w:83 reslen:40 0ms 
2015-11-22T13:44:15.734+0000 [conn8] query production.users query: { email: "*******" } planSummary: IXSCAN { email: 1 } ntoskip:0 keyUpdates:0 numYields:0 locks(micros) r:125 nreturned:1 reslen:1553 0ms 
2015-11-22T13:44:15.918+0000 [conn7] remove production.tokens query: { user_id: "5330d44ba6885a020005bc88" } ndeleted:0 keyUpdates:0 numYields:0 locks(micros) w:236 0ms 
2015-11-22T13:44:15.918+0000 [conn7] command production.$cmd command: delete { delete: "tokens", deletes: [ { q: { user_id: "5330d44ba6885a020005bc88" }, limit: 0 } ], ordered: true, writeConcern: { w: 1 } } keyUpdates:0 numYields:0 reslen:40 0ms 
2015-11-22T13:44:16.019+0000 [conn9] insert production.tokens query: { _id: "Tor9ke2lrt5Ooeifuh6hnCYFmmpDlWu8tRu2T2uZbgylFpx8EBlg1Aw7cQKQNc0I09zRhLrxdceV7lTf6UWl769ZMLX1cxlb0qksY8ssj1zme9uT1PkpNlIlNdBJE40S", user_id: "5330d44ba6885a020005bc88", expires: new Date(1448804120000), created: new Date(1448199855964), __v: 0 } ninserted:1 keyUpdates:0 numYields:0 locks(micros) w:73 0ms 
2015-11-22T13:44:16.020+0000 [conn9] command production.$cmd command: insert { insert: "tokens", documents: [ { _id: "Tor9ke2lrt5Ooeifuh6hnCYFmmpDlWu8tRu2T2uZbgylFpx8EBlg1Aw7cQKQNc0I09zRhLrxdceV7lTf6UWl769ZMLX1cxlb0qksY8ssj1zme9uT1PkpNlIlNdBJE40S", user_id: "5330d44ba6885a020005bc88", expires: new Date(1448804120000), created: new Date(1448199855964), __v: 0 } ], ordered: false, writeConcern: { w: 1 } } keyUpdates:0 numYields:0 locks(micros) w:105 reslen:40 0ms 
2015-11-22T13:44:16.128+0000 [conn10] command production.$cmd command: findAndModify { findandmodify: "users", query: { _id: ObjectId('5330d44ba6885a020005bc88') }, new: false, remove: false, upsert: false, update: { $set: { last_login: new Date(1448199856068) } }, writeConcern: { w: 1 } } update: { $set: { last_login: new Date(1448199856068) } } nscanned:1 nscannedObjects:1 nMatched:1 nModified:1 fastmod:1 keyUpdates:0 numYields:0 locks(micros) w:130 reslen:1624 0ms 
+0

Есть больше информации, которая необходима для устранения проблемы, какой рабочей нагрузки вы занимаетесь чтением? письмо? или сбалансированы между ними? Сохраняются ли ваши данные в памяти или он всегда попадает на диск? Вы действительно достигаете выделенной крышки ввода-вывода? – datasage

+0

1. рабочая нагрузка низкая, только я выдаю этот запрос. Этот единственный запрос, как вы можете видеть, выполняет некоторые чтения и записи. Данные подходят для всей базы данных: <1gig и экземпляр имеет 15-гигабайтную память. Я не могу достигнуть выделенной крышки ввода-вывода, поскольку только я выдаю этот запрос POST, который запускает эти ~ 5 запросов. – nwkeeley

+0

Являются ли время латентности непосредственно монго? или вы проходите через приложение? Если вы используете приложение, оно размещено в том же регионе, что и ваш экземпляр mongo? – datasage

ответ

1

Причина этого вопроса, как представляется, создание экземпляра Монго в США на западе в то время как хостинг приложения в США Востоке. Латентность сети является причиной увеличения времени отклика.

+0

Да, это было именно так. Heroku + Compose.io оба работают на востоке США, мой экземпляр EC2 был на западе США. Перемещение его на Восток США разрешило проблему. – nwkeeley