Я запускаю програму facebook, яка наразі має 300 - 600 одночасних користувачів (і зростає). Щоб підготувати апаратне забезпечення до зростання, я змінив свій i7 / 12gb ram / 2x 80gb intel x25 ssd (debian 5.0 / mysql 5.0 / 64bit) на бі-xeon / 24gb ram / 2x 120gb intel 320 ssd (ubuntu 10.10 / mysql 5.1 / 64 біт).
тепер я стикаюся з проблемою, що продуктивність гірша, ніж на "меншій коробці". На обох серверах я використовував nginx / php fcgi для обслуговування вмісту.
Я використовую тільки innodb, маючи приблизно 65% / 35%. Близько 800 - 1000 к / с, але всі запити прості і ніколи не приєднуються до більше 1 додаткової таблиці. Всі індекси встановлені, і жоден окремий запит не записується у повільний журнал (> 2s). На даний момент у мене є близько 400 Мб даних (близько 1 Гбіт з індексами), очікуючи, що вони подвоюються щомісяця.
Я б обожнював усіх, хто міг би дати нам підказку, що потрібно змінити, щоб зробити це більш гладко.
Стара конфігурація в i7 box виглядала така (змішаний myisam / innodb), досить хороша для 800+ користувачів.
старий мій.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
Нова конфігурація у вікні bi-xeon така (чистий innodb), викликаючи велике навантаження з 300+ користувачами. Близько 30 mysql-процесів, що знаходяться вгорі списку процесів.
Введення / виведення диска:
avg-cpu: %user %nice %system %iowait %steal %idle
36.28 0.00 1.60 0.17 0.00 61.95
мій.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
вимкнено і чи можна це ввімкнути?