2011-10-27 17 views
5

मैं एक साझा वेब होस्टिंग कंपनी से एक वीपीएस में जा रहा हूं। और मैं अपने सिस्टम के लिए इष्टतम विन्यास खोजने की कोशिश कर रहा हूं।MySQL उपलब्ध स्मृति का उपयोग नहीं कर रहा है

आधे मिलियन रिकॉर्ड के साथ 1 विशिष्ट तालिका के लिए, 1 क्वेरी जो पिछले सर्वर पर कुछ सेकंड ले रही थी, अब मिनट ले रही है।

मैं अपने सर्वर के प्रतिक्रिया समय में सुधार करने की कोशिश कर रहा हूं, इसलिए मैंने अधिक मेमोरी खरीदी (मेरे पास 2 जीबी रैम है, और यदि आवश्यक हो तो मैं और भी संसाधन खरीद सकता हूं) और 2 कोर)। मैं भी अपने VPS के लिए पुरानी कंपनी की कॉपी करने my.cnf द्वारा "धोखा" है:

[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 

समस्या यह है कि प्रश्न अभी भी धीमी है, और सर्वर नहीं उपलब्ध स्मृति का उपयोग करता है!

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

कोई सुझाव?

सादर

उत्तर

4

आप https://github.com/rackerhacker/MySQLTuner-perl

का उपयोग कर पर एक नज़र जो तुम MySQL विश्लेषण करने के लिए उपयोग कर सकते हैं हो सकता है और यह सिफारिश की सेटिंग्स उत्पादन होगा।

आपकी सेटिंग्स 2 जीबी मेमोरी के लिए उच्च दिखती है। आईई max_connections = 8059 कि अपने स्वयं में आपके पास से अधिक स्मृति की आवश्यकता होगी। स्टार - - OOO मेरे समस्या है

[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 

2GB RAM आप MySQL में इन सेटिंग्स का उपयोग कर की कोशिश कर सकते के लिए ये 2GB सर्वरों में से एक के लिए मैं वर्तमान में उपयोग कर रहा हूँ

+0

हाय OOO अनुशंसित सेटिंग कर रहे हैं * नहीं * सेटिंग्स को मेरे पास अधिक मेमोरी की आवश्यकता है, लेकिन इसके विपरीत: उपलब्ध स्मृति का उपयोग तब भी नहीं किया जाता है जब सेटिंग्स बहुत अधिक हो। – mossaab

+0

यह प्रसंस्करण शक्ति के साथ करने के लिए हो सकता है जानकारी प्राप्त करने में कितना समय लगता है .. क्या आपने एसएसएच में शीर्ष का उपयोग कर सीपीयू को मॉनीटर किया है? –

+0

मेरे पास लगभग 110% CPU उपयोग (2 कोर के साथ) है। यह क्वेरी सीपीयू को प्रभावित नहीं करती है। इसलिए मुझे नहीं लगता कि यह कारण भी है। – mossaab

संबंधित मुद्दे