作者lasner (= =)
看板PHP
標題[請益] out of memory 問題
時間Tue Feb 21 19:41:11 2012
最近架了一個Apache+PHP+MySql的Server
人數少的狀態下都沒出什麼狀況
但是當使用人數到達300+後 就會常常發生Out of memory
Fatal error: Out of memory (allocated 786432) (tried to allocate 16 bytes) on
line 144
使用者需多F5幾次 又可以繼續使用了
前面(786432)和後面(16)的數字會變來變去 總和也都不大相同
程式如下
$memCache = new Memcache;
$memCache->connect("127.0.0.1", 11211);
$array = array();
$array = $memCache->get($tmp); <= 這行錯誤的
php.ini 內的 memory_limit 設定為256M(phpinfo內顯示也為256M)
想請教 是否有人也有遇過類似的狀況 或者有其他的解決方法 m(_ _)m
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.117.32.75
1F:推 Fantasywind:memory_limit調大呢? 根本之道還是要看程式怎麼寫吧 02/21 19:46
2F:→ lasner:memory_limit原本是8M 調成256M還是有這樣的問題~ 程式的部 02/21 19:51
3F:→ lasner:分 有可能是其他程式的執行錯誤 影響到這邊嗎@@? 02/21 19:51
4F:推 LaPass:記憶體不足,請檢察程式是不是沒寫好,256Mb應該很夠.... 02/21 19:52
5F:→ lasner:嗯嗯 請問程式沒寫好大概是哪些情況比較容易發生? 變數宣告 02/21 19:57
6F:→ lasner:過多 或者讀取資料量太大 這類的嗎? 02/21 19:58
7F:→ LaPass:遞迴..... 之類的..... 不過我沒在php中遇過 02/21 19:59
8F:→ LaPass:memCache是什麼啊? 02/21 19:59
9F:→ lasner:目前是有看到一篇文章有提到foreach在很肥得陣列會可能out 02/21 20:00
10F:→ lasner:of memory~ 02/21 20:01
11F:→ lasner:memCache 是把資料塞到記憶體中的工具 方便快速讀取~ 02/21 20:01
12F:→ mirae:問題在$tmp變數是怎塞的,怎麼會塞到爆? 02/21 20:33
13F:→ lasner:$tmp是要和memCache取的資料 內容大概是 array("MESSAGE", 02/21 20:37
14F:→ lasner:"STRING")的字串 02/21 20:38
15F:→ UniFish:程式問題~究竟是塞什麼 02/21 20:43
16F:→ mirae:所以mem沒爆,是$array爆,要去調php.ini裡的memory設定 02/21 20:43
17F:→ mirae:把$memCache->get($tmp);內容dump出來,基本上一定大的不得了 02/21 20:45
18F:→ lasner:先感謝各位的回答>"< 有試著把抓到的東西印出來 是很大沒錯 02/21 20:48
19F:→ lasner:不過 一般情況下丟到$array內 也沒有發生問題~ 所以 才會思 02/21 20:49
20F:→ lasner:考是否是其他的地方影響到了 每次跳出來的總合都不相同.怪. 02/21 20:51
21F:→ chrisQQ:你的 memcache 單筆 cache 大小設定,memory_limit 設定 02/22 01:46
22F:→ chrisQQ:機器總可用記憶體剩餘? 02/22 01:46
23F:→ chrisQQ:memcache 我記得單筆不要超過1MB比較好 02/22 01:47
24F:→ emn178:memcache是extension有額外的設定請參考 02/22 20:26
26F:→ dlikeayu:一些framework session的使用及關閉錯誤也會導至 02/24 01:52