Может ли эта входящая и исходящая пропускная способность моего сервера вызывать проблемы?

#node.js #mongodb #parse-server

#node.js #mongodb #parse-server

Вопрос:

У меня есть социальное приложение, в котором пользователи выполняют обычные действия других социальных приложений; загружают несколько текстовых сообщений и фотографий каждый час, ставят лайки и комментируют (для каждого действия создается уведомление), просматривают пользовательские / нативные объявления, блокируют пользователей (и их контент) и т.д.

Приложение работает на Parse Server версии 2.8.4 . Для тех, кто не знает, Parse Server использует Node.js , express и MongoDB . У меня есть 1 сервер для приложения и еще один для БД, оба размещены на DigitalOcean.

Вот их технические характеристики:

 Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz x4
8 GB of RAM
SSD
Ubuntu 16.04
  

Обычно у нас есть около 100-150 одновременных пользователей каждый день, которые создают около 500 сообщений в день, 2000 комментариев, 2000 лайков, и каждый из них обычно остается в течение примерно 40 минут. но сегодня мы достигли 600, и приложение буквально замерло! Я видел графики, предоставленные DigitalOcean, и каждый показатель (процессор, оперативная память и т.д.) Был нормальным, максимум 40-50 процентов. С другой стороны, входящая и исходящая пропускная способность достигла максимума!

Как вы можете видеть на изображении ниже, каждый день мы получаем около 6 Мбит / с входящего трафика и 2,5 Мбит / с исходящего. Сегодня мы достигли более 10 Мбит / с входящей и 15 Мбит / с исходящей!

введите описание изображения здесь

Приложение работает с pm2 на одном процессоре. Во время инцидента мы пытались использовать все 4 из них, но, похоже, ничего не улучшилось… он все еще зависал. На данный момент мы также ничего не кэшируем (хотя и сделаем это очень скоро). База данных проиндексирована, но кроме этого мало что было сделано для улучшения. Все фотографии хранятся в S3 из DigitalOcean.

Вопрос в том, учитывая, что все остальные показатели имели нормальные максимумы, и что база данных довольно хорошо структурирована, считаете ли вы, что этот скачок пропускной способности может вызвать полное замораживание сервера, или это вообще не повлияет на это? Может ли быть так, что сервер, который мы используем, недостаточно хорош для поддержки приложения?

Кроме того, сколько пользователей, по вашему мнению, должна поддерживать наша инфраструктура? Я знаю, что это зависит от многих факторов, но, основываясь на том, что я описал, нормально ли не иметь возможности обрабатывать 600 пользователей?

Ответ №1:

Я не думаю, что приложение зависло… Если ваш сервер показал нормальную загрузку в показателях, я сомневаюсь, что это потому, что у самого сервера есть проблема. Похоже, что ваша пропускная способность ограничивала соединения пользователей. Возможно, скорость входящего и исходящего соединения ниже, чем 10 и 15 Мбит / с, которые вы достигли?

Если это так, попробуйте установить (оплатить) соединение с более высокой скоростью. Ваш сервер сможет обрабатывать много гигабит в секунду, прежде чем аппаратное обеспечение перестанет работать, а программное обеспечение вашего сервера даже близко не подойдет к пропускной способности. Но вы не можете обрабатывать данные, которые не были переданы; и это создало узкое место для всего остального.