현재 300-600 명의 동시 사용자가 있고 증가하는 페이스 북 앱을 실행 중입니다. 하드웨어를 성장시킬 준비를 갖기 위해 i7 / 12gb ram / 2x 80gb 인텔 x25 ssd (debian 5.0 / mysql 5.0 / 64bit)를 bi-xeon / 24gb ram / 2x 120gb 인텔 320 ssd (ubuntu 10.10 / mysql 5.1 / 64 비트).
지금 나는 "작은 상자"보다 성능이 나쁘다는 문제에 직면하고 있습니다. 두 서버 모두 nginx / php fcgi를 사용하여 콘텐츠를 제공했습니다.
나는 약 65 % / 35 %의 읽기 / 쓰기를 갖는 innodb 만 사용하고 있습니다. 약 800-1000 qps이지만 모든 쿼리는 단순하며 둘 이상의 추가 테이블을 조인하지 않습니다. 모든 인덱스가 설정되고 느린 쿼리 (> 2 초)에 개별 쿼리가 기록되지 않습니다. 현재 매월 두 배가 될 것으로 예상하는 약 400MB의 데이터 (색인이있는 약 1GB)가 있습니다.
나는 매끄럽게 작동하도록 변경해야 할 힌트를 줄 수있는 모든 사람들을 좋아합니다.
i7 상자의 이전 구성은 다음과 같았습니다 (myisam / innodb 혼합).
오래된 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
바이 제온 상자의 새로운 구성은 이와 같으며 (순수 innodb) 300 명 이상의 사용자에게 높은로드를 발생시킵니다. 프로세스 목록 상단에 약 30 개의 mysql 프로세스가 있습니다.
디스크 I / O :
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
비활성화되어 있고 활성화 할 수 있습니까?