1

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

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

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

更新

所有页面首先体验到 Bad Gateway 502,然后刷新 CSS 丢失(主要是引导程序)。Bad Gateway 将在与 DB 查询无关的静态页面上刷新 2 或 3 次浏览器后出现。

我的设置:

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

www.conf 设置:

  • 下午 = 动态
  • 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/log/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 错误的每一个点上,我一直在努力弄清楚它到底意味着什么。这个日志文件有很多这些错误,显然我试图弄清楚是什么。正在进行。

我如何临时解决这个问题是通过代客重启。重新启动 nginx 或 php 并不能解决问题,因此,将其隔离为代客。

4

2 回答 2

0

只是在这里评论,因为我遇到了另一种可能导致这种情况的情况。请注意,如果没有引用标头信息,Yevgeniy 的答案在导致 502 时也是正确的。

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

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

于 2019-02-26T10:08:53.413 回答
0

我只知道页面可能无法在第一时间加载但在另一个位置加载的一个原因。它是关于Redirect::back()->withInput(Input::all());

在第一次加载时,可能会有一些输入,在刷新时 - 不会留下任何输入。

于 2018-02-22T02:36:41.870 回答