Laravel间歇性Bad Gateway 502错误和页面丢失css样式

时间:2018-02-20 05:17:48

标签: css laravel laravel-5 bad-gateway

尝试加载时的某些页面我收到Bad Gateway Ngnix 502错误,但是在页面刷新时它会解析页面加载。不确定这是否相关,但是一个页面需要大量的mssql查询,页面将加载结果,但不会继续加载与页面关联的CSS。

master.blade.php文件包含bootstrap css和主题样式,extention.blade.php将扩展master(与我项目中的其他多个页面一样)但是它包含一个DB查询,当dd()时成功返回无法加载CSS。其他页面有时会出现此问题,多次刷新将更正页面加载。

希望有人可以帮助我的情况。听起来像配置问题?只是不确定..

更新

所有页面首先经历Bad Gateway 502,然后刷新CSS(主要是bootstrap)。糟糕的网关将在静态页面上刷新2或3次后与数据库查询无关联。

我的设置:

  • Mac OS X Sierra 10.12.6
  • PHP 7.1
  • Nginx和Laravel 5.6

www.conf setup:

  • pm = dynamic
  • pm.max_children = 10
  • pm.start_servers = 10
  • pm.min_spare_servers = 10
  • pm.max_spare_servers = 10

〜/ .valet / Nginx / Sites.dev-env(代码停放的我的项目目录)有以下几行(由我自己添加以尝试解决此问题):

`fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/Users/myusername/.valet/valet.sock;
fastcgi_index 
/Users/myusername/.composer/vendor/laravel/valet/server.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME 
/Users/myusername/.composer/vendor/laravel/valet/server.php;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;`

php-fpm.conf设置:

  • 默认为include=/usr/local/etc/php/7.1/php-fpm.d/*.conf

Laravel Storage拥有777权限集(只是为了确定它是否存在文件权限问题,这将被恢复为755 fyi)

现在解决此问题的关键是错误日志,它提供以下内容:

php错误日志:

`[22-Feb-2018 10:29:06 Australia/Sydney] PHP Fatal error:  Uncaught 
PDOException: SQLSTATE[25000]: [FreeTDS][SQL Server]The ROLLBACK 
TRANSACTION request has no corresp$
Stack trace:
0 {main}
  thrown in [no active file] on line 0`

但是,我唯一与之相关的SQL是选择查询,但我不相信这是Bad Gateway的主要原因。

〜/ .valet /数/ nginx的-error.log中:

`2018/02/22 10:24:23 [error] 62179#0: *9 upstream prematurely closed 
connection while reading response header from upstream, client: 
127.0.0.1, server: sites.dev-env`

我认为这是主要问题。它发生在Bad Gateway错误的每一个点上,我一直试图找出它究竟意味着什么。这个日志文件有很多这些错误显然我试图找出什么。正在进行。

我如何暂时解决问题是通过重启代客。 Brew重新启动nginx或php并没有解决问题,因此将其隔离为代客。

2 个答案:

答案 0 :(得分:0)

我知道只有一个原因导致页面可能无法在第一个位置加载,而是在另一个位置加载。大概是Redirect::back()->withInput(Input::all());

在第一次加载时,刷新时可能会有一些输入 - 没有输入。

答案 1 :(得分:0)

仅在这里评论,因为我遇到了可能导致这种情况的另一种情况。请注意,如果没有引荐来源标头信息,Yevgeniy的答案也将导致502错误。

在负载下,我能够确定该数据库受到某些性能不佳的查询的打击特别严重。这些查询似乎正在使我们的数据库保持正常运行,并且这样做导致Web服务器每分钟上下运行几次。似乎PHP-FPM一直在不断打开/关闭数据库连接-可能是由于负载导致打开的连接停滞所致。

无论如何-作为对此的一般回答,数据库问题可能会导致您的Web层锁定并返回502错误。在这种情况下,Laravel不会为您提供有用的信息,但是如果您开始收到这样的间歇性错误,则可能需要检查数据库。