Я не гуру серверов, может ли кто-нибудь помочь мне понять, какая часть моего сервера находится под нагрузкой и что я могу сделать, чтобы это исправить?
Мое лучшее предположение - слишком много подключений к серверу узлов + mysql, потому что большую часть времени я получаю mysql connection refeused errors
в моих журналах приложения node js
[root@dominoserver ~]# vi /var/log/mysql/mysql_error.log
InnoDB: Progress in percent: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
ОБНОВЛЕНИЕ: я проверил диаграмму использования процессора на сервере, и на нем было много 100% скачков, поэтому сейчас я добавил еще одно ядро процессора на свой сервер ... нужно подождать и посмотреть, что произойдет!
У вас есть журналы производительности, и добавление дополнительных ресурсов на сервер никогда не бывает плохой идеей.
То, что я могу предложить на основании своего опыта
Проверьте все свои журналы, dmesg, служебные журналы и т. Д. На наличие связанных сообщений. В некоторых случаях вполне возможно, что у сервера достаточно ресурсов, но он сталкивается с ограничениями ядра или mysql ... такими как, например, количество открытых файлов или одновременные соединения (потоки) с сервером mysql.
У вас есть мониторинг на вашем сервере, и это здорово, но иногда картинка рисует тысячи слов, и вы можете быстрее определять тенденции, фактически просматривая данные в графическом формате.
Существует огромное количество инструментов для мониторинга. Возможно, даже будет какая-то опция в графиках вывода вашего инструмента мониторинга.
Если выясняется, что mysql перегружен, вы можете сделать несколько вещей, чтобы оптимизировать эту часть вашего сервера.
настройка параметров mysql.
оптимизация структуры базы данных с помощью более быстрых индексов
организация данных другим способом или переработка вашего приложения для улучшения запросов.
Сосредоточение внимания на том, как ваше приложение взаимодействует с вашей базой данных (через внутренние сокеты домена Unix или через петлевой TCP-сокет, повторно использует ли оно пулы соединений)
«Лучший запрос к базе данных - это тот, который вам никогда не придется делать». Вы думаете, что «счетчик количества просмотров видео на YouTube» рассчитывается с помощью запроса к базе данных? подумай еще раз!
есть много инструментов, которые нужно сделать, некоторые из них платные, некоторые вы можете просто установить бесплатно.
https://github.com/major/MySQLTuner-perl
https://stackify.com/mysql-tutorial-improve-performance/
Если окажется, что это просто «способ» доступа к данным в базе данных, подумайте о своих данных? Вы выполняете сложные запросы или mysql необходим для поиска пары ключ / значение ... Поэкспериментируйте с разными серверами баз данных и взгляните на базы данных nosql, у вас может быть модель базы данных, которая просто соответствует этим гораздо более быстрым способам доступа к данным :-).
Если вы не можете изменить архитектуру уровня базы данных, то есть несколько слоев кеша, которые действительно могут ускорить ваше приложение, если оно снова и снова выполняет одни и те же запросы чтения.
https://dev.mysql.com/doc/refman/5.7/en/innodb-memcached-intro.html
Последнее, о чем следует подумать, - это кто обращается к mysql? бэкэнд доступен в Интернете? все ли запросы исходят оттуда, где, по вашему мнению, они должны быть? У вас есть задание резервного копирования, выполняющееся удаленно, что приводит к перегрузке уже загруженного сервера во время цикла резервного копирования?
Оптимизация - это хороший повод для изучения, иронично, что многие приложения могут поддерживать свои текущие внешние нагрузки с гораздо меньшим количеством серверного оборудования и без масштабирования. Масштабирование намного проще (больше NET / RAM / CPU / SSD / DISK).
Удачи.
https://www.tecmint.com/command-line-tools-to-monitor-linux-performance/ https://www.binarytides.com/linux-commands-monitor-network/