摘要:緩沖區(qū)的大小由和兩個值控制。而這些緩沖區(qū)是根據(jù)實際的大小動態(tài)生成的,并不是一次性創(chuàng)建的。比如一個的頁面,會創(chuàng)建共個。當(dāng)小于等于時,所有數(shù)據(jù)當(dāng)然全部在內(nèi)存中處理。內(nèi)存中緩沖了,剩下的會寫入的文件中。
今天在寫接口時碰到了這個問題,返回json格式的數(shù)據(jù),但是被截斷了
經(jīng)過排查,才發(fā)現(xiàn)是數(shù)據(jù)過大超出緩沖區(qū)最大容量,而將數(shù)據(jù)寫入臨時文件時又沒有權(quán)限,所以再返回時,超出緩沖區(qū)的數(shù)據(jù)將丟失
解決方法:給fastcgi_temp 目錄賦讀寫權(quán)限
?
在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 將其緩沖到內(nèi)存中,然后依次發(fā)送到客戶端瀏覽器。緩沖區(qū)的大小由 fastcgi_buffers 和 fastcgi_buffer_size 兩個值控制。
比如如下配置:
fastcgi_buffers 8 4K;
fastcgi_buffer_size 4K;
fastcgi_buffers 控制 nginx 最多創(chuàng)建 8 個大小為 4K 的緩沖區(qū),而 fastcgi_buffer_size 則是處理 Response 時第一個緩沖區(qū)的大小,不包含在前者中。所以總計能創(chuàng)建的最大內(nèi)存緩沖區(qū)大小是 84K+4K = 36k。而這些緩沖區(qū)是根據(jù)實際的 Response 大小動態(tài)生成的,并不是一次性創(chuàng)建的。比如一個 8K 的頁面,Nginx 會創(chuàng)建 24K 共 2 個 buffers。
當(dāng) Response 小于等于 36k 時,所有數(shù)據(jù)當(dāng)然全部在內(nèi)存中處理。如果 Response 大于 36k 呢?fastcgi_temp 的作用就在于此。多出來的數(shù)據(jù)會被臨時寫入到文件中,放在這個目錄下面。
內(nèi)存中緩沖了 36Kb,剩下的會寫入的文件中。而實際的情況是,運行 Nginx Process 的用戶并沒有 fastcgi_temp 目錄的寫權(quán)限,于是剩下的數(shù)據(jù)就丟失掉了。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/39388.html
摘要:但是長度過長時不能正常獲取數(shù)據(jù),通過觀察返回數(shù)據(jù)的源代碼,發(fā)現(xiàn)被截斷了。服務(wù)器環(huán)境解決方法對比發(fā)現(xiàn),使用代替的時候可以正常獲取長的數(shù)據(jù)。問題出現(xiàn)在此時臨時向目錄下寫入了臨時數(shù)據(jù),而執(zhí)行的用戶沒有該目錄的寫入權(quán)限。解決該權(quán)限問題后問題解決。 問題描述 通過網(wǎng)頁獲取數(shù)據(jù),數(shù)據(jù)格式為xml。當(dāng)xml比較短時,可以正常獲取數(shù)據(jù)。但是xml長度過長時不能正常獲取數(shù)據(jù),通過觀察返回數(shù)據(jù)的源代碼,...
摘要:但是長度過長時不能正常獲取數(shù)據(jù),通過觀察返回數(shù)據(jù)的源代碼,發(fā)現(xiàn)被截斷了。服務(wù)器環(huán)境解決方法對比發(fā)現(xiàn),使用代替的時候可以正常獲取長的數(shù)據(jù)。問題出現(xiàn)在此時臨時向目錄下寫入了臨時數(shù)據(jù),而執(zhí)行的用戶沒有該目錄的寫入權(quán)限。解決該權(quán)限問題后問題解決。 問題描述 通過網(wǎng)頁獲取數(shù)據(jù),數(shù)據(jù)格式為xml。當(dāng)xml比較短時,可以正常獲取數(shù)據(jù)。但是xml長度過長時不能正常獲取數(shù)據(jù),通過觀察返回數(shù)據(jù)的源代碼,...
摘要:但是長度過長時不能正常獲取數(shù)據(jù),通過觀察返回數(shù)據(jù)的源代碼,發(fā)現(xiàn)被截斷了。服務(wù)器環(huán)境解決方法對比發(fā)現(xiàn),使用代替的時候可以正常獲取長的數(shù)據(jù)。問題出現(xiàn)在此時臨時向目錄下寫入了臨時數(shù)據(jù),而執(zhí)行的用戶沒有該目錄的寫入權(quán)限。解決該權(quán)限問題后問題解決。 問題描述 通過網(wǎng)頁獲取數(shù)據(jù),數(shù)據(jù)格式為xml。當(dāng)xml比較短時,可以正常獲取數(shù)據(jù)。但是xml長度過長時不能正常獲取數(shù)據(jù),通過觀察返回數(shù)據(jù)的源代碼,...
摘要:而從數(shù)學(xué)上看的話,更是短時記憶了,因為梯度流經(jīng)的時候,經(jīng)歷的是的連環(huán)相乘的路徑在輸入輸出門關(guān)閉前,顯然如前邊的數(shù)學(xué)證明中所述,這樣會發(fā)生梯度爆炸和 引人入勝的開篇:想要搞清楚LSTM中的每個公式的每個細(xì)節(jié)為什么是這樣子設(shè)計嗎?想知道simple RNN是如何一步步的走向了LSTM嗎?覺得LSTM的工作機制看不透?恭喜你打開了正確的文章!?前方核彈級高能預(yù)警!本文信息量非常大,文章長且思維連貫...
閱讀 2136·2021-11-19 09:58
閱讀 1721·2021-11-15 11:36
閱讀 2881·2019-08-30 15:54
閱讀 3400·2019-08-29 15:07
閱讀 2775·2019-08-26 11:47
閱讀 2828·2019-08-26 10:11
閱讀 2513·2019-08-23 18:22
閱讀 2764·2019-08-23 17:58