尝试在生产环境中访问我的Sylius网站,但我在内存错误中运行:
在stderr中发送的FastCGI:" PHP消息:PHP致命错误: directoryname /app/bootstrap.php.cache中允许的内存大小为134217728字节耗尽(试图分配72个字节)在第2798行"
我发现我可以通过设置AppKernel(' prod',true)来绕过这个问题,但我认为这是不好的做法。
有人遇到过类似的问题吗?
答案 0 :(得分:0)
可能有多种原因,因为128MB的RAM并没有那么多。
如果您的缓存未预热,并且应用程序需要生成所有文件,则在第一次请求时会占用大量RAM。
大多数情况下,在生产模式下不应该是这种情况,如果您运行composer install
或使用在部署期间调用> php app\console cache:clear
的某种部署机制(capistrano,部署者),因为这也会引发缓存。
尝试在服务器上手动运行composer install,因为这应该在构建自动加载文件后生成缓存。
如果您使用GD调整图像大小,它将始终解压缩图像。这意味着jpeg图像为3000x3000,大小为1KB,其中每个像素为#fff需要大约35-54MB或RAM
(3000 x 3000 x 4(rgba)) / 1024^2 = 34.3MB
添加一些处理要求,它可以轻松达到128MB以上。此外,人们倾向于上传尺寸高达10k的图像。
解决方案:切换到imagick / gmagick或极大地增加RAM