摘要:缓冲区的大小由和两个值控制。而这些缓冲区是根据实际的大小动态生成的,并不是一次性创建的。比如一个的页面,会创建共个。当小于等于时,所有数据当然全部在内存中处理。内存中缓冲了,剩下的会写入的文件中。
今天在写接口时碰到了这个问题,返回json格式的数据,但是被截断了
经过排查,才发现是数据过大超出缓冲区最大容量,而将数据写入临时文件时又没有权限,所以再返回时,超出缓冲区的数据将丢失
解决方法:给fastcgi_temp 目录赋读写权限
在nginx配置中的解释
Syntax: fastcgi_buffers number size; Default: fastcgi_buffers 8 4k|8k; Context: http, server, location Sets the number and size of the buffers used for reading a response from the FastCGI server, for a single connection. By default, the buffer size is equal to one memory page. This is either 4K or 8K, depending on a platform. Syntax: fastcgi_buffers number size; Default: fastcgi_buffers 8 4k|8k; Context: http, server, location Sets the number and size of the buffers used for reading a response from the FastCGI server, for a single connection. By default, the buffer size is equal to one memory page. This is either 4K or 8K, depending on a platform. Syntax: fastcgi_temp_path path [level1 [level2 [level3]]]; Default: fastcgi_temp_path fastcgi_temp; Context: http, server, location Defines a directory for storing temporary files with data received from FastCGI servers. Up to three-level subdirectory hierarchy can be used underneath the specified directory. For example, in the following configuration fastcgi_temp_path /spool/nginx/fastcgi_temp 1 2; a temporary file might look like this: /spool/nginx/fastcgi_temp/7/45/00000123457
Nginx 的 buffer 机制,对于来自 FastCGI Server 的 Response,Nginx 将其缓冲到内存中,然后依次发送到客户端浏览器。缓冲区的大小由 fastcgi_buffers 和 fastcgi_buffer_size 两个值控制。
比如如下配置:
fastcgi_buffers 8 4K;
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 的作用就在于此。多出来的数据会被临时写入到文件中,放在这个目录下面。
内存中缓冲了 36Kb,剩下的会写入的文件中。而实际的情况是,运行 Nginx Process 的用户并没有 fastcgi_temp 目录的写权限,于是剩下的数据就丢失掉了。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/39388.html
摘要:但是长度过长时不能正常获取数据,通过观察返回数据的源代码,发现被截断了。服务器环境解决方法对比发现,使用代替的时候可以正常获取长的数据。问题出现在此时临时向目录下写入了临时数据,而执行的用户没有该目录的写入权限。解决该权限问题后问题解决。 问题描述 通过网页获取数据,数据格式为xml。当xml比较短时,可以正常获取数据。但是xml长度过长时不能正常获取数据,通过观察返回数据的源代码,...
摘要:但是长度过长时不能正常获取数据,通过观察返回数据的源代码,发现被截断了。服务器环境解决方法对比发现,使用代替的时候可以正常获取长的数据。问题出现在此时临时向目录下写入了临时数据,而执行的用户没有该目录的写入权限。解决该权限问题后问题解决。 问题描述 通过网页获取数据,数据格式为xml。当xml比较短时,可以正常获取数据。但是xml长度过长时不能正常获取数据,通过观察返回数据的源代码,...
摘要:但是长度过长时不能正常获取数据,通过观察返回数据的源代码,发现被截断了。服务器环境解决方法对比发现,使用代替的时候可以正常获取长的数据。问题出现在此时临时向目录下写入了临时数据,而执行的用户没有该目录的写入权限。解决该权限问题后问题解决。 问题描述 通过网页获取数据,数据格式为xml。当xml比较短时,可以正常获取数据。但是xml长度过长时不能正常获取数据,通过观察返回数据的源代码,...
摘要:而从数学上看的话,更是短时记忆了,因为梯度流经的时候,经历的是的连环相乘的路径在输入输出门关闭前,显然如前边的数学证明中所述,这样会发生梯度爆炸和 引人入胜的开篇:想要搞清楚LSTM中的每个公式的每个细节为什么是这样子设计吗?想知道simple RNN是如何一步步的走向了LSTM吗?觉得LSTM的工作机制看不透?恭喜你打开了正确的文章! 前方核弹级高能预警!本文信息量非常大,文章长且思维连贯...
阅读 2100·2021-11-19 09:58
阅读 1700·2021-11-15 11:36
阅读 2867·2019-08-30 15:54
阅读 3382·2019-08-29 15:07
阅读 2758·2019-08-26 11:47
阅读 2804·2019-08-26 10:11
阅读 2495·2019-08-23 18:22
阅读 2743·2019-08-23 17:58