当我使用php artisan brainsocket:start --port=8080启动socket服务器时,当用户逐渐增长时,我的内存总是耗尽,socket服务器将停止运行。
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 33151019 bytes)
in /alidata/www/wcketbtn/vendor/react/stream/src/Buffer.php on line 118
{"error":{"type":"Symfony\\Component\\Debug\\Exception\\FatalErrorException",
"message":"Allowed memory size of 134217728 bytes exhausted (tried to allocate 33151019 bytes)",
"file":"\/alidata\/www\/wketbtn\/vendor\/react\/stream\/src\/Buffer.php","line":118}}随着用户的增长,我使用htop来检查内存使用情况:
CPU[||||||||||||||||||||||||||||||||||||||||||||||||||||99.3%] Tasks: 64, 57 thr; 2 running
Mem[||||||||||||||||||||||||||||||||||||||||||||||||636/994MB] Load average: 1.00 0.68 0.37
Swp[ 0/0MB] Uptime: 123 days(!), 19:05:51
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
28858 root 20 0 202M 91680 6776 R 97.0 9.0 5:54.93 php artisan brainsocket:start --port=8080
29054 root 20 0 24508 2184 1448 R 1.0 0.2 0:00.06 htop所以我使用了php -d memory_limit=512M artisan brainsocket:start --port=8080,但仍然会耗尽内存。
我不知道哪些代码会逐渐增加我的内存使用量,以及我如何限制它或取消设置某些内容。我该怎么做呢?
或者,我如何编写一个外壳脚本来监视套接字服务器关闭,当它停止时,重新启动它(运行php artisan brainsocket:start --port=8080 )。
发布于 2015-06-06 11:59:31
memory_get_usage和memory_get_peak_usage函数是您的好帮手。
尝试将它们的输出保存在PHP脚本的其他部分之后的某个位置,您很快就会发现问题所在。
此外,我还会检查您的memory_limit=512M是否正常工作。设置了该设置后,错误代码是什么样子的?它是否仍然显示~134,000,000字节已耗尽?
https://stackoverflow.com/questions/30678156
复制相似问题