MySQL 5.1を16G RAMを搭載したCentOS 6サーバーで実行しています。私はそれにApacheも手に入れました。
MySQLは常に過剰なCPUを使用しています。
top - 17:40:36 up 112 days, 12:13, 1 user, load average: 1.24, 1.72, 1.82
Tasks: 222 total, 1 running, 221 sleeping, 0 stopped, 0 zombie
Cpu(s): 12.3%us, 11.6%sy, 0.4%ni, 72.9%id, 2.8%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 16329040k total, 12946136k used, 3382904k free, 587252k buffers
Swap: 1051832k total, 1050988k used, 844k free, 4986272k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
25368 mysql 20 0 8854m 5.3g 5064 S 295.4 33.9 11912:37 mysqld
1757 Apache 20 0 982m 80m 28m S 2.0 0.5 0:03.04 httpd
2494 Apache 20 0 878m 68m 27m S 2.0 0.4 0:00.92 httpd
my.cnf
[client]
default-character-set=utf8
[mysqld]
local-infile=0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
bind-address=127.0.0.1
key_buffer = 800M
max_allowed_packet = 32M
thread_stack = 256K
thread_cache = 8
thread_cache_size = 20
thread_concurrency = 4
max_connections = 510
table_cache = 9000
interactive_timeout = 80
tmp_table_size = 540M
max_heap_table_size = 540M
max_connect_errors = 150
wait_timeout = 20
read_rnd_buffer_size = 1024K
connect_timeout = 10
query_cache_type = 1
query_cache_limit = 40M
query_cache_size = 128M
innodb_buffer_pool_size = 256M
join_buffer_size = 14M
sort_buffer_size = 14M
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
SHOW FULL PROCESSLIST;
は、平均2〜5のクエリで私を返します。
このシステムでMyISAMテーブルとInnoDBテーブルを取得しました。
ご提案ありがとうございます。
SHOW GLOBAL STATUS
出力は、コメントの下にあります。
システムで最も遅いクエリを見てみましょう。おそらく、それを修正する(インデックスの追加、SELECTの再構成など)ことが最善の解決策です。 SHOW FULL PROCESSLIST-あなたはいたずらなクエリを表示する可能性が高いと述べました。それらと、関連するSHOW CREATE TABLEを見てみましょう。
query_cache_size = 128M-大きすぎます; 5000万以下。大きな値を指定すると、剪定によりシステムの速度が低下します。
innodb_buffer_pool_size = 256Mおよびkey_buffer = 800M-どのエンジンを使用していますか?これらの値はどちらも「良い」とは言えません。詳細なアドバイスについては http://mysql.rjweb.org/doc.php/memory を参照してください。キャッシュのサイズが適切でないと、余分なI/Oが発生する可能性があり、遅いクエリと見なされます。
table_cache = 9000-いいね!テーブルはいくつありますか? (何千ものテーブルがOSの問題です。)
この問題は、このサーバーでホストされている非アクティブなレガシーWebサイトが原因で発生しました。大量のスパムの標的になりました。一部のテーブルを読み取り専用モードにすることで、この問題を解決しました。