VPS 2GB RAM内存和Symfony 3-内存不足

时间:2018-10-11 14:51:40

标签: nginx out-of-memory

我正在尝试在Debian 8服务器上安装symfony 3.4项目。我正在使用Nginx作为Web服务器。

我的配置服务器:

  • RAM = 2 GB
  • 内存20 GB

composer安装正常(composer更新也是如此)。 我在同一台服务器上也有一个倾斜的前端。一切正常(npm install,ng build等)。

但是当我请求API的任何路由时,都会收到代码500的错误。我什至无法获得分析器。

在nginx的日志文件中,我可以看到此错误消息log message,但是我配置了php memory_limit = -1。

我的nginx conf文件:

server {
    listen 80;
    server_name my_server_name;
    root location/of/my/front;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ /index.html;
    }
}


server {
    server_name my_server_name_api;
    root location/of/my/api/web;

    location / {
        try_files $uri /app.php$is_args$args;
    }

    location ~ ^/(app_dev|config)\.php(/|$) {
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
    }

    location ~ ^/app\.php(/|$) {
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
       fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
       fastcgi_param DOCUMENT_ROOT $realpath_root;
       internal;
   }

   location ~ \.php$ {
     return 404;
   }

   error_log /var/log/nginx/project_error.log;
   access_log /var/log/nginx/project_access.log;
}

你有什么主意吗? 谢谢

1 个答案:

答案 0 :(得分:0)

此错误可能是由于您的PHP.ini设置文件的内存限制较低,PHP可以设置允许使用的内存限制,通常它不是动态设置的,这意味着需要您对其进行更改达到您要使用的值。

要执行此操作,请找到php.ini文件,并在其上找到带有memory_limit的行,然后将其更改为:

memory_limit = -1

这将允许PHP尽可能多地使用ram,这在某些情况下并不理想,并且通常您会发现大多数网站只需要大约1gb的内存即可运行,因此请尝试:

memory_limit = 1024

相反,如果您不打算使用它,则可以查看其他方法,例如在Symfony中禁用探查器,因为它是Symfony中最渴望的组件。为此,请将此代码段添加到您的代码中,它将在您要禁用探查器的位置:

if ($this->container->has('profiler')){
    $this->container->get('profiler')->disable();
}

或者如果要禁用全局设置,可以在配置中设置全局参数。

framework:
    profiler:
        collect: false

您还可以通过将memory_limit放入主.php文件中来通过PHP设置ini_set('memory_limit', '-1');