Высокая загрузка ЦП на сервере MySQL на сервере AWS ubuntu

MySQL показывает очень высокую загрузку ЦП. когда-нибудь вроде бы более 200%. У меня был медленный вход в систему запросов. и время медленного запроса установлено на 1 с. нет медленных запросов. Я использую воспламенитель кода PHP.

мой файл my.cnf:

[mysqld]
innodb_io_capacity=2000
innodb_read_io_threads=32
innodb_write_io_threads=32
innodb_log_buffer_size=250M
innodb_thread_concurrency=0
innodb_buffer_pool_size=1000M
user        = mysql
pid-file    = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
port        = 3306
basedir     = /usr
datadir     = /var/lib/mysql
tmpdir      = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
##
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address       = 127.0.0.1
#
# * Fine Tuning
#
innodb_buffer_pool_size = 12G
key_buffer_size     = 1G
max_allowed_packet  = 256M
thread_stack        = 192K
thread_cache_size       = 100
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover-options  = BACKUP
max_connections        = 300


#innodb_buffer_pool_instances=8
#innodb_read_io_threads=8
#innodb_write_io_threads=8

#open_files_limit = 1024
#table_open_cache = 400
server_id           = 2
bind-address        = 0.0.0.0
log_bin             = /var/log/mysql/mysql-bin.log
log_bin_index       = /var/log/mysql/mysql-bin.log.index
relay_log           = /var/log/mysql/mysql-relay-bin
relay_log_index     = /var/log/mysql/mysql-relay-bin.index
expire_logs_days    = 10
max_binlog_size     = 100M
log_slave_updates   = 1
auto-increment-increment = 2
auto-increment-offset = 2
replicate-ignore-db=phpmyadmin
replicate-ignore-db=mysql
skip-name-resolve
#table_cache            = 64
#thread_concurrency     = 10
#
# * Query Cache Configuration
#
query_cache_limit=0
query_cache_size=0

sort_buffer_size = 2M
join_buffer_size = 128K
read_buffer_size = 128K
read_rnd_buffer_size=256K

что я могу сделать, чтобы уменьшить загрузку процессора? Есть ли способ узнать, какие запросы вызывают высокую загрузку процессора?

Актуальны ли теги PHP и CI?

Nigel Ren 19.11.2018 11:55

Я не знаю, может ли что-то на стороне CI вызывать это или нет, я пробую все, что могу найти в Интернете на сайте MySQL, поэтому я думаю, что кто-то с хорошими знаниями CI может мне помочь, если они сталкивались с этой проблемой раньше

Shashank Padwal 19.11.2018 11:58
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
254
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

there is not any slow query

Нет медленных запросов или в журнале нет медленных запросов? Я думаю, что ваша первая задача звонка - проверить, работает ли ведение журнала запросов так, как вы ожидаете. Это можно легко сделать с помощью дискреционных блокировок без дополнительной нагрузки на систему.

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

Я проверяю это, запустив SELECT SLEEP (2); и этот запрос вошел в систему

Shashank Padwal 19.11.2018 11:52

да ты был прав. в моем PHP для кода цикла есть одна функция, которая запускает запрос. поэтому, если есть 1000 активных игроков, этот цикл запускает один и тот же запрос 1000 раз. Я конвертирую свой код, и теперь в цикле for не выполняется никаких запросов, и теперь мое использование процессора sql составляет менее 5%

Shashank Padwal 19.11.2018 13:52

@DesiMulga Пожалуйста, разместите свой код ДО и ПОСЛЕ, чтобы мы могли ВИДЕТЬ ваше решение на практике. Спасибо, что поделились этим подробным простым изменением.

Wilson Hauck 24.11.2018 20:04

Другие вопросы по теме