sto eseguendo un'app di Facebook che attualmente ha 300 - 600 utenti simultanei (e in crescita). Per preparare l'hardware per la crescita ho cambiato il mio i7 / 12gb ram / 2x 80 gb Intel x25 ssd (debian 5.0 / mysql 5.0 / 64bit) in un bi-xeon / 24 gb ram / 2x 120 gb Intel 320 ssd (ubuntu 10.10 / mysql 5.1 / 64bit).
ora sto affrontando il problema che le prestazioni sono peggiori rispetto alla "scatola più piccola". Su entrambi i server ho usato nginx / php fcgi per servire il contenuto.
sto usando solo innodb, avendo letture / scritture circa il 65% / 35%. Circa 800 - 1000 qps, ma tutte le query sono semplici e non partecipano mai a più di 1 tabella aggiuntiva. Vengono impostati tutti gli indici e nessuna query singola viene registrata nel registro lento (> 2s). Al momento ho circa 400 MB di dati (circa 1 GB con indici) che mi aspetto di raddoppiare ogni mese.
Adorerei tutti quelli che potrebbero darmi un suggerimento su cosa cambiare per renderlo più fluido.
La vecchia configurazione sulla scatola i7 era così (mista myisam / innodb), eseguita abbastanza bene fino a oltre 800 utenti.
vecchio my.cnf
key_buffer = 3000M
max_allowed_packet = 128M
thread_stack = 192K
thread_cache_size = 8
max_connections = 400
table_cache = 8000
thread_concurrency = 16
query_cache_limit = 8M
query_cache_size = 128M
wait_timeout = 10
interactive_timeout = 10
connect_timeout = 600
low_priority_updates = 1
join_buffer_size = 8M
read_buffer_size = 2M
sort_buffer_size = 3M
myisam_sort_buffer_size = 32M
read_rnd_buffer_size = 4M
innodb_buffer_pool_size = 3G
innodb_log_buffer_size = 8M
La nuova configurazione sulla scatola bi-xeon è così (innodb puro), causando un carico elevato con oltre 300 utenti. Circa 30 processi mysql si trovano in cima all'elenco dei processi.
I / O del disco:
avg-cpu: %user %nice %system %iowait %steal %idle
36.28 0.00 1.60 0.17 0.00 61.95
my.cnf
key_buffer = 64M
max_allowed_packet = 1M
thread_stack = 192K
thread_cache_size = 128
max_connections = 500
table_cache = 512
#thread_concurrency = 10
sort_buffer_size = 256K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
tmp_table_size = 32M
max_heap_table_size = 32M
query_cache_limit = 1M
query_cache_size = 128M
query_cache_type = 1
innodb_file_per_table = 1
innodb_data_file_path = ibdata1:1000M:autoextend
innodb_buffer_pool_size = 16384M
innodb_additional_mem_pool_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_support_xa = 0
innodb_lock_wait_timeout = 50
innodb_flush_method=O_DIRECT
innodb_log_files_in_group = 2
innodb_log_file_size = 128M
innodb_log_buffer_size = 8M
innodb_thread_concurrency = 12
skip-name-resolve
disabilitato e può essere abilitato?