求问一下 nginx 里面 proxy_buffers 的设置问题

2020-06-22 16:04:12 +08:00
 goodboy95

nginx 文档里是这么写的:

Syntax: proxy_buffers number size;

Default: proxy_buffers 8 4k|8k;

Context: http, server, location

Sets the number and size of the buffers used for reading a response from the proxied 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.

这是不是说,如果我的系统 PAGE_SIZE 是 4K,一般情况下最大的响应是 250K,平均 QPS 是 5, 我就可以设置成 proxy_buffers 64 4k 这样的,而跟 QPS 无关?我看网上有不少把 size 写成 32k 之类的,在内存页 4k 的情况下这么搞有没有必要?

我自己感觉写 32k 应该不会有啥优化,但搜了好几篇文章都说自己遇到 an upstream response is buffered to a temporary file 就调成 64 32k(或者 16k)了……虽然他们都没公布自己的内存页大小……

1000 次点击
所在节点    问与答
2 条回复
love
2020-06-22 18:00:07 +08:00
为啥这里面缓存,不是指定一个总的缓存大小 ,而是要指定有几块每块多大呢?这里面有啥讲究
goodboy95
2020-06-23 15:43:38 +08:00
@love 说实话,我现在也有点搞不懂,能想到的就是在少浪费内存和提高性能之间找平衡了。50k 的东西缓存下来可以占 13 个缓存片,剩下的还可以让别的连接去用。然后 nginx 读取的时候根据缓存片的编号找到对应的内存地址,完成读取。
不过这些全都是我自己的猜测,nginx 也有不少容量不小但不分块的缓存,想搞懂原因的话我可能还得花老长时间……
(话说你回复我的时候我居然没接到消息,我一直以为没人回了)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/683796

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX