看板 PHP 關於我們 聯絡資訊
最近架了一個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
Fantasywind:memory_limit調大呢? 根本之道還是要看程式怎麼寫吧 02/21 19:46
lasner:memory_limit原本是8M 調成256M還是有這樣的問題~ 程式的部 02/21 19:51
lasner:分 有可能是其他程式的執行錯誤 影響到這邊嗎@@? 02/21 19:51
LaPass:記憶體不足,請檢察程式是不是沒寫好,256Mb應該很夠.... 02/21 19:52
lasner:嗯嗯 請問程式沒寫好大概是哪些情況比較容易發生? 變數宣告 02/21 19:57
lasner:過多 或者讀取資料量太大 這類的嗎? 02/21 19:58
LaPass:遞迴..... 之類的..... 不過我沒在php中遇過 02/21 19:59
LaPass:memCache是什麼啊? 02/21 19:59
lasner:目前是有看到一篇文章有提到foreach在很肥得陣列會可能out 02/21 20:00
lasner:of memory~ 02/21 20:01
lasner:memCache 是把資料塞到記憶體中的工具 方便快速讀取~ 02/21 20:01
mirae:問題在$tmp變數是怎塞的,怎麼會塞到爆? 02/21 20:33
lasner:$tmp是要和memCache取的資料 內容大概是 array("MESSAGE", 02/21 20:37
lasner:"STRING")的字串 02/21 20:38
UniFish:程式問題~究竟是塞什麼 02/21 20:43
mirae:所以mem沒爆,是$array爆,要去調php.ini裡的memory設定 02/21 20:43
mirae:把$memCache->get($tmp);內容dump出來,基本上一定大的不得了 02/21 20:45
lasner:先感謝各位的回答>"< 有試著把抓到的東西印出來 是很大沒錯 02/21 20:48
lasner:不過 一般情況下丟到$array內 也沒有發生問題~ 所以 才會思 02/21 20:49
lasner:考是否是其他的地方影響到了 每次跳出來的總合都不相同.怪. 02/21 20:51
chrisQQ:你的 memcache 單筆 cache 大小設定,memory_limit 設定 02/22 01:46
chrisQQ:機器總可用記憶體剩餘? 02/22 01:46
chrisQQ:memcache 我記得單筆不要超過1MB比較好 02/22 01:47
emn178:memcache是extension有額外的設定請參考 02/22 20:26
dlikeayu:一些framework session的使用及關閉錯誤也會導至 02/24 01:52