Мой веб-сервер использует выделенный хост:
Intel(R) Xeon(R) CPU E5620 8core
12Gram
Centos32bit/Driectadmin
DISK SAS 80G
Php-cgi
На этом хосте работает один веб-сайт
Use wordpress 2.92(+plugin cache...)
Database size 600MB
only 100online
Мой сайт работает очень медленно. Пожалуйста, помогите мне настроить my.cnf.
[mysqld]
user=mysql
key_buffer=128M
set-variable = max_connections=1000
socket = /var/lib/mysql/mysql.sock
key_buffer =32M
table_cache = 1024
open_files_limit = 16344
join_buffer_size = 8M
read_buffer_size = 8M
sort_buffer_size = 8M
tmp_table_size=512M
read_rnd_buffer_size=8M
max_heap_table_size=256M
#myisam_sort_buffer_size=256M
thread_cache_size=8
thread_cache=32
query_cache_type=1
query_cache_limit=1024M
query_cache_size=1024M
thread_concurrency = 16
wait_timeout = 10
connect_timeout = 10
interactive_timeout = 10
long_query_time=1
log-slow-queries = /var/log/mysqlslowqueries.log
max_allowed_packet=32M
skip-innodb
[myisamchk]
key_buffer = 64M
sort_buffer = 64M
read_buffer = 16M
write_buffer = 16M
[isamchk]
key_buffer=64M
sort_buffer=64M
read_buffer=16M
write_buffer=16M
И MySQLTuner
-------- General Statistics --------------------------------------------------
[--] Skipped version check for MySQLTuner script
[OK] Currently running supported MySQL version 5.1.47-log
[!!] Switch to 64-bit OS - MySQL cannot currently use all of your RAM
-------- Storage Engine Statistics -------------------------------------------
[--] Status: -Archive -BDB -Federated -InnoDB -ISAM -NDBCluster
[--] Data in MyISAM tables: 471M (Tables: 30)
[!!] Total fragmented tables: 2
-------- Performance Metrics -------------------------------------------------
[--] Up for: 1d 6h 39m 2s (6M q [57.776 qps], 60K conn, TX: 999M, RX: 2B)
[--] Reads / Writes: 93% / 7%
[--] Total buffers: 1.3G global + 32.2M per thread (1000 max threads)
[!!] Allocating > 2GB RAM on 32-bit systems can cause system instability
[!!] Maximum possible memory usage: 32.7G (275% of installed RAM)
[OK] Slow queries: 0% (10K/6M)
[OK] Highest usage of available connections: 5% (52/1000)
[OK] Key buffer size / total MyISAM indexes: 32.0M/65.5M
[OK] Key buffer hit rate: 100.0% (938M cached / 108K reads)
[OK] Query cache efficiency: 51.4% (3M cached / 5M selects)
[OK] Query cache prunes per day: 0
[OK] Sorts requiring temporary tables: 0% (929 temp sorts / 2M sorts)
[!!] Temporary tables created on disk: 49% (2M on disk / 4M total)
[OK] Thread cache hit rate: 99% (580 created / 60K connections)
[OK] Table cache hit rate: 97% (281 open / 288 opened)
[OK] Open file limit used: 1% (319/16K)
[OK] Table locks acquired immediately: 99% (7M immediate / 7M locks)
-------- Recommendations -----------------------------------------------------
General recommendations:
Run OPTIMIZE TABLE to defragment tables for better performance
Temporary table size is already large - reduce result set size
Reduce your SELECT DISTINCT queries without LIMIT clauses
Не удается запустить mysqld
[root@server ~]#
[root@server ~]# mysqld
100607 18:21:17 [Warning] mysqld: Option '--set-variable' is deprecated. Use --
100607 18:21:17 [Warning] '--log_slow_queries' is deprecated and will be remove
100607 18:21:17 [Note] Plugin 'FEDERATED' is disabled.
100607 18:21:17 [Note] Plugin 'InnoDB' is disabled.
mysqld: File '/var/log/mysqlslowqueries.log' not found (Errcode: 13)
100607 18:21:17 [ERROR] Could not use /var/log/mysqlslowqueries.log for logging urn it on again: fix the cause, shutdown the MySQL server and restart it.
100607 18:21:17 [ERROR] Can't start server: Bind on TCP/IP port: Address alread
100607 18:21:17 [ERROR] Do you already have another mysqld server running on po
100607 18:21:17 [ERROR] Aborting
100607 18:21:17 [Note] mysqld: Shutdown complete
И вывод сверху
[root @ server ~] # верхняя
top - 18:45:03 up 3 days, 4:40, 1 user, load average: 1.80, 1.42, 1.40
Tasks: 266 total, 1 running, 265 sleeping, 0 stopped, 0 zombie
Cpu(s): 4.6%us, 2.5%sy, 0.0%ni, 92.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 12462096k total, 2741388k used, 9720708k free, 599584k buffers
Swap: 8385920k total, 0k used, 8385920k free, 1612488k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7487 mysql 15 0 1138m 241m 3572 S 98.7 2.0 811:12.72 mysqld
1508 admin 16 0 166m 43m 21m S 0.3 0.4 0:00.80 php-cgi
2019 apache 15 0 9264 3268 1444 S 0.3 0.0 0:00.06 httpd
2089 root 15 0 2336 1132 800 R 0.3 0.0 0:00.15 top
32137 admin 15 0 173m 51m 22m S 0.3 0.4 0:02.11 php-cgi
1 root 15 0 2072 580 504 S 0.0 0.0 0:02.42 init
2 root RT -5 0 0 0 S 0.0 0.0 0:00.06 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
5 root RT -5 0 0 0 S 0.0 0.0 0:00.03 migration/1
6 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/1
7 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/1
8 root RT -5 0 0 0 S 0.0 0.0 0:00.18 migration/2
9 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/2
10 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/2
11 root RT -5 0 0 0 S 0.0 0.0 0:00.02 migration/3
12 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/3
13 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/3
14 root RT -5 0 0 0 S 0.0 0.0 0:00.01 migration/4
15 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/4
16 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/4
17 root RT -5 0 0 0 S 0.0 0.0 0:00.01 migration/5
18 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/5
19 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/5
20 root RT -5 0 0 0 S 0.0 0.0 0:00.01 migration/6
21 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/6
22 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/6
23 root RT -5 0 0 0 S 0.0 0.0 0:00.00 migration/7
24 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/7
25 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/7
26 root RT -5 0 0 0 S 0.0 0.0 0:00.05 migration/8
27 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/8
28 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/8
29 root RT -5 0 0 0 S 0.0 0.0 0:00.05 migration/9
Если вы не знаете, с чего начать, начните с MySQLTuner.
Ты только скачать и запустите сценарий perl.
Он запрашивает имя пользователя и пароль администратора mysql, а затем перечисляет некоторую общую статистику, затем статистику хранилища и затем показатели производительности, прежде чем, наконец, дать вам список рекомендаций.
Это экономит часы на первоначальной проверке экземпляра вашего сервера.
После того, как вы что-то исправите, я бы посоветовал запускать скрипт каждый час или около того в течение недели (может быть, реже / может быть дольше, в зависимости от того, насколько загружена ваша база данных), чтобы увидеть, нужно ли менять какие-либо настройки после запуска по-настоящему.
Также посмотрите такие ресурсы.
Как только вы узнаете, что ваш экземпляр MySQL работает нормально, вам нужно будет оптимизировать конкретные запросы в коде вашего приложения, вы можете определить худших нарушителей, проверив журнал медленных запросов (если там что-то есть) и используя профилировщик, например XDebug.
Первая проблема заключается в том, что вы работаете на 32-битной ОС. У вас 12 ГБ оперативной памяти (если я правильно прочитал ваш пост), и вы никогда не увидите, что Mysql использует так много, потому что вы используете 32-битную версию. Обновите Centos до 64-битной ОС, а затем начните использовать предоставленный ими файл my.large.cnf. Это должно помочь вам двигаться в гораздо лучшем направлении. Если у вас все еще есть проблемы, тогда нужно оценить вещи, например, это в основном чтение, запись, и то и другое. Это может сказать вам, что вам следует использовать Innodb или MYISAM. Innodb будет хорош для большого количества обновлений / записи и чтения, где, если все в основном читается, MyISAM - хороший выбор. Нам также нужно знать это, чтобы понять Key Cache и т. Д., Но первое, что нужно сделать, - это заставить ОС использовать всю эту RAM.
show status
show variables
show processlist
Вы используете php-cgi? fcgid или fastcgi?
У вас не так много пользователей через mysql, но он потребляет 98,7% вашего ЦП на снимке экрана «вверху». Является ли это представителем того, как система ведет себя большую часть времени? Если это так, то что-то очень не так (и высокая загрузка ЦП является ключевым признаком реальной проблемы). Даже при большой нагрузке и большом объеме памяти mysqld должен проводить много времени в ожидании ввода-вывода.
Эта ошибка описывает проблемы с высокой загрузкой процессора при использовании 64-битного MySQL - хотя и более старой версии.
Что значит mysqladmin processlist
шоу?
Вы смотрели на запущенные процессы MySQL внутри mysql? (т.е. через mytop?)
Меня пугает высокая загрузка процессора процессом MySQLd ...