mysqld-nt: Out of memory (Needed 1677720 bytes)解決方案_Mysql

來源:互聯網
上載者:User

今天發現網站有點慢,發現mysql日誌中提示mysqld-nt: Out of memory (Needed 1677720 bytes),經排查是由於最近調整了mysql的一些參數導致,以為記憶體大就不怕了,32位系統真心內容利用率很低,據說不超過4G,我們的32G記憶體真浪費了,以後還是使用win2008 r2或centos系統做伺服器吧。廢話不多說下面為大家分享下解決方案:

因為mysql版本不同可能配置略有區別,主要就是設定如下參數

key_buffer、key_buffer_size、read_buffer_size、sort_buffer_size記住了有這個參數的就改,沒有也不要添加。修改後一般是降低,然後重啟mysql服務即可。

核心提示:檢查mysqld配置my.conf,著重看key_buffer_size, max_heap_table_size, tmp_table_size幾個參數,推薦設定key_buffer_size值為max_heap_table_size的1/4.

因為伺服器記憶體而大富餘比較多,前些天把my.conf裡的好幾個參數調得相當大,1G甚至2G,但並不穩定,mysqld報出過幾次Out of memory (Needed xxx bytes)這樣的錯誤,分析原因時,想到是32位linux系統上的linux不支援PAE,不能使用超過3G以上的記憶體,所以把改大的幾個參數適當改小了點,最大也只有幾百M的樣子,但還是出現過幾次Out of memory錯誤。於是網上多方查詢,後來受到公式

key_buffer_size + (read_buffer_size + sort_buffer_size)*max_connections

的啟發,兩次檢查了key_buffer_size, max_heap_table_size, tmp_table_size幾個參數,發現這三個值的設定是一樣的,竟然都是512M!

於是改小key_buffer_size到128M,重啟mysqld接下來5個小時的監測,沒有再發生類似錯誤。

改了這幾個參數後,還是有一條是Out of memory ,繼續檢查,發現innodb_buffer_pool_size = 1512M,於是我改為1000M,再啟Mysql居然好了。

註:這台伺服器一共了才3G記憶體:最終大至如下

key_buffer = 200M
key_buffer_size = 1294963200
#max_join_size = 4294967295
max_join_size = 1294967295
max_allowed_packet = 1M
#table_open_cache = 512
table_cache = 512
sort_buffer_size = 2294967295
read_buffer_size = 2147479552
#write_buffer_size = 4294967295
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 16M

php錯誤Fatal error: Out of memory (allocated 262144) (tried to allocate 19456 bytes

php運行一段時候後出現錯誤:

php錯誤Fatal error: Out of memory (allocated 262144) (tried to allocate 19456 bytes

意思是說:致命錯誤,超出記憶體,已經分配allocated 262144,嘗試分配19456 位元組。

解決方案是修改php.ini,加大memory_limit

剛剛著實嚇我一跳,html可以正常訪問,php不行,我還以為是受攻擊呢。

後來看到www.blogguy.cn 上不去了Fatal error: Out of memory (allocated 262144) (tried to allocate 19456 bytes,知道是記憶體不足導致的,可是vps也連不上去,也看不到到底是誰在占記憶體,只能進網站後台重啟vps,就不知道問題出在哪兒了。記錄下來備案!

修改方法

修改php.ini

如下的地區

max_execution_time = 120 ; Maximum execution time of each script, in seconds
max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
memory_limit = 64M ; Maximum amount of memory a script may consume (64MB)

根據需要調整。

重啟一下apache就可以了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.