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
что я могу сделать, чтобы уменьшить загрузку процессора? Есть ли способ узнать, какие запросы вызывают высокую загрузку процессора?
Я не знаю, может ли что-то на стороне CI вызывать это или нет, я пробую все, что могу найти в Интернете на сайте MySQL, поэтому я думаю, что кто-то с хорошими знаниями CI может мне помочь, если они сталкивались с этой проблемой раньше






there is not any slow query
Нет медленных запросов или в журнале нет медленных запросов? Я думаю, что ваша первая задача звонка - проверить, работает ли ведение журнала запросов так, как вы ожидаете. Это можно легко сделать с помощью дискреционных блокировок без дополнительной нагрузки на систему.
Если предположить, что действительно нет запросов, занимающих более 1 секунды, тогда нагрузка возникает из-за большого количества запросов, занимающих менее 1 секунды. Вам нужно зафиксировать их все, чтобы определить и расставить приоритеты для ваших усилий по настройке. Но вы можете начать с включения кеша запросов (который вы по какой-то причине отключили).
Я проверяю это, запустив SELECT SLEEP (2); и этот запрос вошел в систему
да ты был прав. в моем PHP для кода цикла есть одна функция, которая запускает запрос. поэтому, если есть 1000 активных игроков, этот цикл запускает один и тот же запрос 1000 раз. Я конвертирую свой код, и теперь в цикле for не выполняется никаких запросов, и теперь мое использование процессора sql составляет менее 5%
@DesiMulga Пожалуйста, разместите свой код ДО и ПОСЛЕ, чтобы мы могли ВИДЕТЬ ваше решение на практике. Спасибо, что поделились этим подробным простым изменением.
Актуальны ли теги PHP и CI?