У меня есть веб-сервер, на котором запущены некоторые службы, такие как , Apache
и некоторые приложения. В периоды большого трафика мой сервер, похоже, не справляется с большой нагрузкой. Когда это происходит, часто при попытке доступа к странице я получаю следующее сообщение от :Mysql
Redis
NodeJS
mysql
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 — хорошие инструменты для этого.