作者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