2012-08-24 27 views
16

如何在my.cnf文件中設置內存限制。我試着用memory_limit = 64M。但它在重啓MYSQL服務器時顯示錯誤。任何一個請幫助...如何在my.cnf文件中設置內存限制

的my.cnf

[mysqld] 
datadir=/home/mysql/ 
tmpdir=/home/mysqltmp 
#max_connections = 175 #was 175 
max_connections = 80 
#max_connect_errors = 350 #was 250 
max_connect_errors = 250 
safe-show-database 
skip-locking 
key_buffer = 1024M # was 128M 
max_allowed_packet = 6M 
myisam_sort_buffer_size = 64M 

#old settings, for 900 ish max maxconn 
#sort_buffer_size = 32M 
#read_buffer_size = 32M 
#read_rnd_buffer_size = 32M 

sort_buffer_size = 5M 
read_buffer_size = 5M 
read_rnd_buffer_size = 5M 

query_cache_size= 1024M 
query_cache_limit= 16M 
max_heap_table_size = 128M 
tmp_table_size = 128M 
thread_concurrency = 16 
wait_timeout = 10 
innodb_file_per_table 
innodb_log_file_size = 10485760 
open_files_limit = 8192 
low_priority_updates = 1 
#log_slow_queries = /var/log/mysql_slow.log 
#log_queries_not_using_indexes = 1 
#slow_queries_log_file = /var/log/mysql_slow.log 
memory_limit = 64M 
# who set these? these are NOT memory settings, but rather integer settings. 
#table_cache = 1024M 
#thread_cache_size = 8M 

table_cache = 512 
thread_cache_size = 8 

[mysqldump] 
quick 
max_allowed_packet = 16M 

[mysql] 
no-auto-rehash 

[isamchk] 
key_buffer = 128M 
sort_buffer_size = 128M 
read_buffer = 2M 
write_buffer = 2M 

[myisamchk] 
key_buffer = 128M 
sort_buffer_size = 128M 
read_buffer = 2M 
write_buffer = 2M 
+2

你有什麼錯誤? –

+0

也許我錯了,但不是'memory_limit'的PHP配置?更多:'my.cnf'關於MySql,而不是SQL服務器... – Marco

+0

@Aaron Hathaway我越來越喜歡這個'mysql失敗了,請聯繫sysadmin(結果是「mysql is not running」)'。 – Juice

回答

23

有在MySQL my.cnf文件沒有這樣的變量,如memory_limit。您只能從MySQL server system variables添加變量。閱讀此How Mysql uses memory

它取決於您的MySQL服務器的RAM大小。您可以相應地基於以下基本公式爲MySQL的存儲需求計算配置my.cnf文件:

key_buffer_size + (read_buffer_size + sort_buffer_size) * max_connections = K bytes of memory 

您可能需要配置這些基本參數。從my.cnf文件

樣品變量:

#MyISAM 
key_buffer_size = 8G 
sort_buffer_size = 1M 
read_buffer_size = 1M 
read_rnd_buffer_size = 2M 
myisam_sort_buffer_size = 2M 
join_buffer_size = 2M 

#Innodb 
innodb_buffer_pool_size = 16G 
innodb_additional_mem_pool_size = 2G 
innodb_log_file_size = 1G 
innodb_log_buffer_size = 8M 
innodb_flush_log_at_trx_commit = 1 
innodb_lock_wait_timeout = 30 
innodb_file_format=barracuda 
+0

你的服務器是否有超過16G的RAM? –

1

有在MySQL沒有memory_limit的限制設置。您可以管理或限制MySQL的內存使用量的唯一方法是降低緩存,緩衝區和池大小的設置(確切的設置名取決於您使用的存儲引擎。) 適用於MyISAM引擎的一些設置(默認引擎)是:

table_cache=1024 
record_buffer=1M 
sort_buffer_size=2M 
read_buffer_size=2M 
read_rnd_buffer_size=2M 
myisam_sort_buffer_size=64M 
thread_cache_size=128 
query_cache_limit=1M 
query_cache_size=64M 
query_cache_type=1 

對於InnoDB您有:

innodb_buffer_pool_size = 256M 
innodb_additional_mem_pool_size = 20M 
innodb_log_file_size = 64M 
innodb_log_buffer_size = 8M 

如果你正在尋找改變內存限制在PHP該行(memory_limit的= 64M),應該在php.ini文件,不是my.cnf,它是MySQL的配置文件。