无法加载资源:net :: ERR_INCOMPLETE_CHUNKED_ENCODING

6
我最近遇到了一些问题,我的应用程序有时候无法加载视图。我使用Debian服务器和php-fpm和nginx运行(php5.6.8和nginx 1.8.0),两者都是从源代码编译的。另外,我还在运行Lavavel 4.2。
目前为止,我在Chrome和Firefox中都遇到了这个问题(Chrome仅停止加载并显示错误,Firefox不显示错误但显示视图的不完整版本)。
到目前为止,我已经检查了nginx和PHP的权限,它们都是以相同的用户(www-data:www-data)运行的。我的php-fpm套接字配置如下:
[sitename]

listen = /var/run/php5-fpm/sitename.sock
listen.backlog = -1
listen.owner = www-data
listen.group = www-data
listen.mode=0660

; Unix user/group of processes
user = folderuser
group = www-data

; Choose how the process manager will control the number of child processes.
pm = dynamic
pm.max_children = 75
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 500

; Pass environment variables
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

请注意,我将用户设置为folderuser,因为站点文件所在的文件夹是由folderuser(folderuser:www-data)拥有的。 此外,laravel文件夹内的权限配置为755(缓存和上传文件夹为775,以便www-data可以写入缓存文件)。
我已禁用任何类型的服务器端php缓存(除了zend opcache)。
我还尝试禁用chrome中的“预取资源以更快地加载页面”功能,但无法解决问题。
作为最后一招,我尝试了这个解决方案:
/*
|--------------------------------------------------------------------------
| Fix for Chrome / PHP 5.4 issue
| http://laravel.io/forum/02-08-2014-another-problem-only-with-chrome
|--------------------------------------------------------------------------
*/

App::after(function($request, $response)
{

    $content = $response->getContent();

    $contentLength = strlen($content);

    $response->header('Content-Length', $contentLength);

});

这个脚本有几个变体,但我发现有一些内容长度不匹配(比net::ERR_INCOMPLETE_CHUNKED_ENCODING错误更常见)。

综上所述,我已经检查了服务器端的权限和用户/组设置,除zend外,我已经禁用了服务器端缓存,我调整了chrome设置,并尝试了一个适用于laravel的脚本,但都没有解决我遇到的问题。请注意,该问题会在站点上的随机页面和随机间隔时间内发生。

我真的不知道下一步应该怎么做才能解决我的问题,因为以上解决方案是我在互联网上找到的唯一解决方案。

我非常希望得到一些帮助。

编辑:我在另一台具有完全相同配置的服务器上运行了同一应用程序的Beta版本(唯一的区别是硬件,尽管内存更大),那里没有出现这个问题。

此外,我忘记提到该应用程序当前不使用HTTPS运行。然而,Beta版正在使用HTTPS。

编辑:问题存在的服务器有2048 MB RAM,Beta服务器有8192 MB RAM。

编辑:当错误发生时,我使用fiddler检查了响应,它会在某个点上不明原因地截断响应。


这是一个低内存问题。在我这种情况下,将内存从2GB增加到8GB后,与你遇到的相同问题,在安装Moodle(资源密集型)期间已经解决了。 - undefined
3个回答

17
您可能需要检查文件夹/var/lib/nginx是否也是由www-data拥有。我曾经遇到过这样的问题,当响应页面过大时,Nginx工作进程试图使用此文件夹并失败,因为它被nginx拥有,而工作进程在www-data下运行。通过执行chown -R www-data:www-data /var/lib/nginx,问题得以解决。

非常感谢,我花了很多时间来解决这个问题。它为我解决了许多我面临的问题。 - Tom Mwenda
我不得不更新我的nginx.conf中的用户和组,因为它正在重置。 - zeros-and-ones

1
如果将来有人发现这个问题,我的net::ERR_INCOMPLETE_CHUNKED_ENCODING是因为空间不足导致的。查看您的磁盘使用情况,看看是否是这个原因!

请查看此链接 https://dev59.com/210a5IYBdhLWcg3w07rt#29990521 - Mafei
@mafei 你是在建议我在那里补充回答吗?这可能是个好主意,只要不被视为垃圾邮件即可。 - I B 3

0

我在我的最新Debian上运行的Nginx服务器上看到了一个类似的问题。我正在运行一个安装了高级自定义字段的WordPress网站。在高级自定义字段中,它说问题可能与php.ini文件中的max_input_vars值有关。我将我的值从1000增加到3000,这解决了我的一个站点上的问题。

您可以查看此链接,以查看它是否可能对您有所帮助。http://www.advancedcustomfields.com/faq/limit-number-fields/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接