今天线上突然出现了部分栏目加载不出来!慌的一批,都已经想好怎么甩锅了!
后来我查看了下日志出现了一下内容:
很好,泡米森弟奈他! 基本就已经知道怎么回事了!
二话不说 上去我就: ps -ef|grep php ps-ef|grep nginx
查看下运行的用户是否一致,结果是一致的;
但是我又 ll -d /usr/local/nginx/fastcgi_temp/ 发现权限出现了问题;
最终:chmod -R 777 /usr/local/nginx/fastcgi_temp/ 问题解决了
---------------
不建议给777的,可以先644试试,或者755!
----------------
问题出现的原因:
但是,为什么会「导出当前页」能正常导出而「导出全部」就失败呢?刨根问底得去查 参考资料 找到解释:
先简单的说一下 Nginx 的 buffer 机制,对于来自 FastCGI Server 的 Response,Nginx 将其缓冲到内存中,然后依次发送到客户端浏览器。缓冲区的大小由 fastcgi_buffers 和 fastcgi_buffer_size 两个值控制。
Nginx 默认配置如下:
1 2 fastcgi_buffers 8 4/8K; fastcgi_buffer_size 4K;
fastcgi_buffers 控制 nginx 最多创建 8 个大小为 4K 的缓冲区,而 fastcgi_buffer_size 则是处理 Response 时第一个缓冲区的大小,不包含在前者中。所以总计能创建的最大内存缓冲区大小是 84K+4K = 36k。而这些缓冲区是根据实际的 Response 大小动态生成的,并不是一次性创建的。比如一个 8K 的页面,Nginx 会创建 24K 共 2 个 buffers。
当 Response 小于等于 36k 时,所有数据当然全部在内存中处理。如果 Response 大于 36k 呢?fastcgi_temp 的作用就在于此。多出来的数据会被临时写入到文件中,放在这个目录下面。
也就是说,当前几台服务器上的站点,一旦响应的数据超过 36 KB 超出的部分将写到 fastcgi_temp 目录,如果 fastcgi_temp 不可写的话将只返回前 36 KB 的内容,难怪手动将分页条数参数给到 1000 页面不完整。
-----
有问题请加博主微信进行沟通!
全部评论