मैं एक फेसबुक ऐप चला रहा हूं जिसमें वर्तमान में 300 - 600 समवर्ती उपयोगकर्ता हैं (और बढ़ते हैं)। बढ़ने के लिए हार्डवेयर तैयार करने के लिए मैंने अपने i7 / 12gb ram / 2x 80gb Intel 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 का उपयोग किया है।
मैं केवल innodb का उपयोग कर रहा हूं, 65% / 35% के बारे में पढ़ता / लिखता हूं। लगभग 800 - 1000 qps लेकिन सभी क्वेरीज़ सरल हैं और कभी भी 1 अतिरिक्त तालिका में शामिल नहीं होती हैं। सभी इंडेक्स सेट किए गए हैं और धीमी लॉग (> 2s) में कोई व्यक्तिगत क्वेरी लॉग नहीं है। फिलहाल मेरे पास लगभग 400mb डेटा (लगभग 1gb इंडेक्स के साथ) है, जो इसे हर महीने दोगुना करने की उम्मीद कर रहा है।
मैं हर किसी को प्यार करता हूँ जो मुझे संकेत दे सकता है कि इसे चलाने के लिए क्या बदलना है।
I7 बॉक्स पर पुराना कॉन्फ़िगरेशन इस तरह था (मिश्रित myisam / innodb), 800+ उपयोगकर्ताओं के लिए बहुत अच्छा प्रदर्शन किया।
पुराने 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
अक्षम है और क्या इसे सक्षम किया जा सकता है?