現在、私は次のことが起こっています:
そして:
クエリを実行すると、ほとんどの時間が0に設定された約68のエントリが表示されます
show full processlist;
そのようにスワップを凍結するのは普通ですか?私は成功せずにswappinessを変更しようとしました。
エコー10>/proc/sys/vm/swappiness
my.cnfファイル
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
# Here is entries for some specific programs
# The following values assume you have at least 32M ram
# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
Nice = 0
log-warnings = 2
log-error = /var/log/mysqld.log
[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /data/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
#
# * Fine Tuning
#
key_buffer_size = 16M
max_allowed_packet = 128M
thread_stack = 192K
thread_cache_size = 64
table_open_cache = 3000
#open_file_limit = 10000
join_buffer_size = 128k
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover = BACKUP
max_connections = 3000
wait_timeout = 150
interactive_timeout = 30
innodb_buffer_pool_size = 25G
# The preferred value size for the log_file_size is 25% of the innodb_buffer_pool_size.
innodb_log_file_size = 1G
#innodb_log_buffer_size = 512M
innodb_buffer_pool_instances = 10
tmp_table_size = 256M
max_heap_table_size = 256M
innodb_flush_log_at_trx_commit = 2
query_cache_limit = 64M
query_cache_size = 256M
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 1
max_binlog_size = 100M
[mysqldump]
quick
quote-names
[mysql]
#no-auto-rehash # faster start of mysql but no tab completition
[isamchk]
key_buffer = 16M
Mysqldを誤って構成し、サービスがサーバーが実際に持っているよりも多くのメモリを予約しているようです(VIRTは37Gですが、サーバーは32Gです)。 doc をご覧ください。 my.cnfはわかりませんが、まずinnodb_buffer_pool_sizeを24Gに設定してサービスを再起動する必要があります。
32Gマシンでバッファプールを25Gにすることは妥当です。メインキャッシュ領域用に25GBが予約されています。 (RAMを消費する他のアプリケーションを実行する場合は、25Gを下げてそれらのスペースを確保します。)
出力は、スワップしていないことを意味します。良い。多くのmysqlプロセスが生きているが、おそらく何もしていないことを意味します。これは正常です。しかしながら、 thread_cache_size
は64;これは不必要に大きいです。通常は10で十分です。
query_cache_size
-5,000万以下。値を大きくすると、処理が遅くなる可能性があります。
max_connections
-数百に低下します。まれなインストールだけが1000を超える必要があります。3000が必要な場合は、他の問題があり、それらに対処する必要があります。あなたはそれが1700でピークに達したと言いますか?あなたのクライアントはどうですか?彼らは切断に失敗していますか?彼らはあまりにも多くの接続を許可していますか?たとえば、ApacheはMaxClients
を持っています。これは、たった20の値ではなく、大きな値ではありません。