2011-10-27 2 views
5

Paylaşılan bir web barındırma şirketinden bir VPS'ye taşınıyorum. Ve sistemim için en uygun yapılandırmayı bulmaya çalışıyorum.MySQL Kullanılabilir belleği kullanmıyor

Yarım milyon kaydı olan belirli bir tablo için, önceki sunucuda birkaç saniye süren 1 sorgu artık dakika alıyor.

Sunucumun yanıt süresini artırmaya çalışıyorum, bu yüzden daha fazla bellek aldım (2 GB RAM'im var ve gerekirse 2 çekirdekten daha fazla kaynak satın alabilirim).

[mysqld] 
read_buffer_size=8M 
read_rnd_buffer_size=8M 
sort_buffer_size=32M 
innodb_additional_mem_pool_size=503M 
innodb_flush_log_at_trx_commit=1 
innodb_log_buffer_size=16M 
innodb_buffer_pool_size=1007M 
innodb_log_file_size=256M 
innodb_thread_concurrency=8 
innodb_autoextend_increment=128 
max_connections=8059 
max_user_connections=50 
thread_cache_size=128 
thread_stack=196608 
binlog_cache_size=2M 
net_read_timeout=30 
net_retry_count=10 
net_write_timeout=30 
thread_concurrency=10 
open_files_limit=9940 
max_heap_table_size=32M 
tmp_table_size=64M 
key_buffer_size=512M 
key_buffer=128M 
myisam_sort_buffer_size=64M 
join_buffer=16M 
record_buffer=8M 
wait_timeout=300 
connect_timeout=10 
max_allowed_packet=16M 
max_connect_errors=100 
table_cache=1024 
query_cache_size=32M 
query_cache_type=1 
ft_min_word_len=4 
datadir=/var/lib/mysql 
tmpdir=/tmp 
socket=/var/lib/mysql/mysql.sock 
old-passwords=0 
[mysqldump] 
quick 
max_allowed_packet=16M 
[myisamchk] 
key_buffer=64M 
sort_buffer=64M 
read_buffer=16M 
write_buffer=16M 

sorun sorgu hala yavaş olmasıdır ve sunucu değil kullanılabilir belleği kullanmak yapar: Ben de VPS eski şirketin kopyalayarak my.cnf tarafından "hile" var!

   total  used  free  shared buffers  cached 
Mem:   2002  1986   15   0   6  1079 
-/+ buffers/cache:  901  1101 
Swap:   1747   2  1745 

Herhangi bir öneriniz var mı?

Selamlar

cevap

4

Sen MySQL analiz için kullanabileceğiniz https://github.com/rackerhacker/MySQLTuner-perl

kullanarak bir göz olabilir ve ayarları çıkış tavsiye edecektir.

Ayarlarınız 2GB bellek için çok yüksek görünüyor. IE max_connections = 8059 Kendi içinde, sahip olduğunuzdan daha fazla bellek gerektirir. YILDIZ - - oOo Benim sorunum olduğunu size MySQL bu ayarları kullanarak deneyebilirsiniz 2gb RAM için

[mysqld] 
max_connections=100 
innodb_buffer_pool_size=256M 
query_cache_size=256M 
key_buffer_size=256M 
innodb_flush_log_at_trx_commit=0 
innodb_flush_method=O_DIRECT 
query_cache_type=1 
query_cache_limit=2M 
table_cache=1024 
join_buffer_size=4M 
thread_cache_size=128 
tmp_table_size=256M 
max_heap_table_size=256MB 

Bunlar 2gb sunucularından biri için şu anda

+0

Merhaba Ooo kullanıyorum Tavsiye edilen ayarlar * bu ayarların sahip olduğumdan daha fazla bellek gerektirmediğini, ancak bunun tersini: Ayarların çok yüksek olmasına rağmen kullanılabilir bellek kullanılmıyor. – mossaab

+0

Bu, bilgi işlemek için ne kadar zaman harcayacağının gücü ile ilgili olabilir. –

+0

Yaklaşık% 110 CPU kullanımı var (2 çekirdekli). Bu sorgu CPU'yu etkilemiyor. Yani bunun da sebebi olduğunu düşünmüyorum. – mossaab