Мы используем VPS и испытываем высокую нагрузку, вызванную сервером mysql. В настоящее время мы не можем найти причину этой проблемы, и поэтому я надеюсь, что кто-то может указать мне правильное направление.
VPS имеет 4 процессора и 4 ГБ (18/11 EDIT: теперь 8 ГБ) оперативной памяти. Информация о дисках недоступна, но я считаю, что они не самые быстрые. На этом VPS мы запускаем 1 установку magento CE 1.7.0.2 с 20 интернет-магазинами и 8 установками wordpress (подключенными к системе magento). У нас есть некоторые пользовательские расширения, установленные в системе magento. Мы используем Ubuntu 13.04 с Nginx 1.2.6, mysql 5.5.34, PHP 5.4.9, Polishd 3.0.4 и используем APC в качестве кэшера кода операции.
При беге сверху:
top - 13:58:21 up 17:51, 2 users, load average: 4.40, 4.09, 3.91
Tasks: 119 total, 3 running, 116 sleeping, 0 stopped, 0 zombie
%Cpu(s): 94.0 us, 3.5 sy, 0.0 ni, 2.0 id, 0.2 wa, 0.0 hi, 0.0 si, 0.3 st
KiB Mem: 4049220 total, 3101744 used, 947476 free, 253548 buffers
KiB Swap: 1044476 total, 22324 used, 1022152 free, 1442356 cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
22378 mysql 20 0 3439m 588m 7888 S 224.0 14.9 73:21.99 mysqld
24650 eemeega6 20 0 532m 56m 28m S 26.0 1.4 0:11.25 php5-fpm
24658 eemeega6 20 0 534m 57m 27m S 25.8 1.5 0:02.80 php5-fpm
24649 eemeega6 20 0 529m 58m 33m S 25.4 1.5 0:12.95 php5-fpm
24652 eemeega6 20 0 532m 61m 33m R 22.2 1.5 0:05.00 php5-fpm
24659 eemeega6 20 0 538m 59m 25m R 16.6 1.5 0:00.83 php5-fpm
24661 eemeega6 20 0 533m 55m 27m S 16.2 1.4 0:00.81 php5-fpm
24648 eemeega6 20 0 535m 65m 34m S 15.4 1.7 0:14.46 php5-fpm
24653 eemeega6 20 0 536m 64m 32m S 11.8 1.6 0:04.55 php5-fpm
24662 eemeega6 20 0 533m 49m 21m S 6.2 1.3 0:00.31 php5-fpm
1236 nobody 20 0 731m 369m 76m S 1.0 9.4 6:38.74 varnishd
22478 www-data 20 0 90532 10m 1044 S 0.4 0.3 0:07.56 nginx
10 root 20 0 0 0 0 S 0.2 0.0 2:29.32 rcu_sched
247 root 20 0 0 0 0 S 0.2 0.0 1:20.05 jbd2/dm-0-8`
Наш файл my.cnf имеет следующие значения:
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
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
bind-address = 127.0.0.1
key_buffer = 64M
max_allowed_packet = 1M
thread_stack = 192K
thread_cache_size = 8
myisam-recover = BACKUP
max_connections = 50
table_cache = 2048
table_definition_cache = 1024
#thread_concurrency = 10
thread_cache_size = 24
wait_timeout = 60
interactive_timeout = 60
query_cache_limit = 1M
query_cache_size = 64M
log_error = /var/log/mysql/error.log
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 8
#log-queries-not-using-indexes = /var/log/mysql/mysql-not-indexes.log
expire_logs_days = 10
max_binlog_size = 100M
#InnoDB
innodb_buffer_pool_size = 1280M
innodb_additional_mem_pool_size = 32M
innodb_log_buffer_size = 1M
innodb_thread_concurrency = 8
innodb_lock_wait_timeout = 60
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
[mysql]
#no-auto-rehash # faster start of mysql but no tab completition
[isamchk]
key_buffer = 16M
!includedir /etc/mysql/conf.d/
Наш вывод из mysqltuner.pl:
[--] Reads / Writes: 97% / 3%
[--] Total buffers: 1.4G global + 2.7M per thread (50 max threads)
[OK] Maximum possible memory usage: 1.6G (40% of installed RAM)
[OK] Slow queries: 0% (0/1M)
[OK] Highest usage of available connections: 42% (21/50)
[OK] Key buffer size / total MyISAM indexes: 64.0M/35.4M
[OK] Key buffer hit rate: 99.8% (902K cached / 1K reads)
[!!] Query cache efficiency: 1.2% (16K cached / 1M selects)
[OK] Query cache prunes per day: 0
[OK] Sorts requiring temporary tables: 0% (0 temp sorts / 739K sorts)
[!!] Joins performed without indexes: 129
[OK] Temporary tables created on disk: 5% (56K on disk / 1M total)
[OK] Thread cache hit rate: 99% (21 created / 16K connections)
[OK] Table cache hit rate: 24% (940 open / 3K opened)
[OK] Open file limit used: 9% (378/4K)
[OK] Table locks acquired immediately: 100% (4M immediate / 4M locks)
[OK] InnoDB data size / buffer pool: 339.7M/1.2G
-------- Recommendations -----------------------------------------------------
General recommendations:
Run OPTIMIZE TABLE to defragment tables for better performance
Adjust your join queries to always utilize indexes
Variables to adjust:
query_cache_limit (> 1M, or use smaller result sets)
join_buffer_size (> 128.0K, or always use indexes with joins)
Мы запускали mysql дольше, чем 24 часа, и использовали большинство настроек, оптимизированных в соответствии с mysqltuner и tuning-primer. Использованные функции восстановления и оптимизации для оптимизации всех баз данных.
К сожалению, mysql переключается на диск, и я думаю, что это высокая загрузка процессора.
Я надеюсь, что кто-то может указать мне правильное направление поиска причины подкачки/высокой нагрузки. Мы не сталкиваемся с медленными запросами журнала (только при переиндексации magento).
Если кому-то нужна дополнительная информация, пожалуйста, спросите меня.
[РЕШЕНИЕ]:
Таким образом, мы решили эту проблему, отключив постоянные соединения в php.ini: mysql.allow_persistent = Off Мы заметили снижение использования ЦП из-за mysql. Tuning-prmier больше не жалуется на то, что наши приложения не закрывают соединения. У нас есть некоторые улучшения, которые нужно внести, поскольку не все наши запросы правильно используют индексы, но на данный момент это исправление помогает нам поддерживать наш сервер в рабочем состоянии.
С уважением, Сандер.
Joins performed without indexes: 129
Видел случаи, когда при добавлении индекса загрузка процессора падала с 200 до 30%. Я бы начал с проверки сторонних таблиц. - person Simon H   schedule 18.11.2013SELECT ID, USER, HOST, DB, COMMAND, TIME, STATE, LEFT(INFO, 51200) AS Info FROM information_schema.PROCESSLIST;
для определения текущих запросов. - person Simon H   schedule 20.11.2013