2014-09-23 68 views
0

我從來沒有真正玩過mysql設置,但在我們新的linux雲服務器上,似乎mysql正在吃掉所有內存直到它崩潰,然後它不能重新啓動,因爲沒有更多內存重新啓動服務,我必須重新啓動雲服務器。MySQL在my.cnf中缺少key_buffer_size

所以我在看我如何能夠馴服內存使用情況,並在閱讀了關於key_buffer_size(和另一個設置我不記得我的頭)之後,我看看my.cnf文件,並沒有什麼這個設置就可以了。我my.cnf如下...

[client] 
port       = 3306 
socket       = /var/run/mysqld/mysqld.sock 

[mysqld_safe] 
socket       = /var/run/mysqld/mysqld.sock 

[mysqld] 
user       = mysql 
pid-file      = /var/run/mysqld/mysql.pid 
socket       = /var/run/mysqld/mysqld.sock 
port       = 3306 
datadir      = /var/lib/mysql 

[mysql] 
!includedir /etc/mysql/conf.d 

沒有key_buffer_size設置...它會繼續吃掉內存,直到它耗盡?不應該設置這個設置嗎?

乾杯

+0

重新讀你寫的東西。 「它不能重新啓動,因爲沒有更多的內存來重新啓動服務。」但是請等待:如果服務崩潰了,現在所有的內存都被釋放了,所以分析不應該是正確的。這個問題不太可能是MySQL。它是另一個內存豬的受害者:http://dba.stackexchange.com/questions/25077/mysql-innodb-crash-post-mortem/25083#25083 – 2014-09-24 01:42:16

回答

0

爲key_buffer_size的默認值是每http://dev.mysql.com/doc/refman/5.0/en/server-parameters.html

8M不過,我想請您設置這些第一(和重啓MySQL),看看問題是否仍然存在。

key_buffer    = 16M 
max_allowed_packet  = 16M 
thread_stack   = 192K 
thread_cache_size  = 8 
query_cache_limit  = 1M 
query_cache_size  = 16M 

如果在使用這些設置後,問題仍然存在,那麼這可能不是配置問題,而是更深層次的問題。

此外,看到這些:

https://dba.stackexchange.com/questions/31182/mysql-slowly-uses-memory-until-it-starts-to-use-swap

https://dba.stackexchange.com/questions/7400/why-does-mysql-use-all-of-memory-and-goes-into-swap-when-doing-lots-of-delayed-i

+0

謝謝... cnf中哪些部分應該這樣去? – 2014-09-23 22:26:55

+1

他們進入'[mysqld]'部分。 – 2014-09-24 01:38:03

0

感謝種的意見!

原來是innodb_buffer_pool_size。它被設置爲我的機器高。我調整了它,並優化了Apache使用的內存量。一切似乎都運行得更好,並且存在一定的內存空間。希望修復它。