службы mysql и redis недоступны в периоды высокого трафика

службы mysql и redis недоступны в периоды высокого трафика

У меня есть веб-сервер, на котором запущены некоторые службы, такие как , Apacheи некоторые приложения. В периоды большого трафика мой сервер, похоже, не справляется с большой нагрузкой. Когда это происходит, часто при попытке доступа к странице я получаю следующее сообщение от :MysqlRedisNodeJSmysql

Warning: mysqli_connect(): (HY000/2003): Can't connect to MySQL server on '127.0.0.1' (99)

Это сообщение появляется в прерывистой форме, таким образом, что большую часть времени, если я обновляю страницу, это сообщение больше не появляется. Кроме того, я не думаю, что это проблема моей конфигурации для mysql, потому что у меня все время следующий результат от mysqltuner.pl:

[OK] Highest usage of available connections: 74% (336/450)

Аналогично Redis Server показывает сообщение о проблеме подключения к серверу:

Could not connect to Redis at 127.0.0.1:6379

Я отслеживал свой сервер в это время и выяснил, что около 2 ГБ ОЗУ (без использования каких-либо байтов SWAP для процесса Mysql, Redis или NodeJS). Потратив некоторое время на исследования (без ориентира), я прочитал кое-что о временных портах. Поэтому я попытался настроить параметр, net.ipv4.ip_local_port_rangeчтобы увеличить диапазон портов (изменить с 32768 61000до 10000 65000). Результаты были ужасными! Мой веб-сервер увеличил время отклика со среднего значения 180~200 мс до примерно 6000 мс, и средняя нагрузка сервера также значительно выросла (но сообщения об ошибках исчезли!).

Мои приложения NodeJS (все они) используют Socket.io и отвечают с другого порта на моем сервере. Я пытаюсь выяснить, как решить эту проблему. Это проблема доступности порта? Почему настройка параметра net.ipv4.ip_local_port_range замедляет работу сервера?

Конфигурация сервера:

  • Ubuntu-сервер x64
  • Intel Xeon E5520 четырехъядерный
  • 8 ГБ оперативной памяти
  • 2x 1000 ГБ SATA 2,5" 5.400 об/мин (RAID 1)
  • 2x 60 ГБ SSD 2,5" (RAID1) (здесь размещаются все данные базы данных)

решение1

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

Я использовалсобранодля захвата точек данных на моих разделах, памяти, процессорах, apache, mysql и других вещах. Он захватывает данные и сохраняет эти точки данных, затем вам понадобится какой-то другой инструмент для извлечения данных - напримернекоторые веб-интерфейсы для отображения данных.

Затем для устранения неполадок, возможно, инструмент для удара по вашему серверу и создания сценария с высокой нагрузкой. Apache Benchmark (ab) или Siege — хорошие инструменты для этого.

Связанный контент