反向代理比原接口性能还低是怎么回事呢,能不能改善

2021-01-19 18:36:16 +08:00
 bombless
反向代理本身的配置就是很普通的


location / {
#proxy_buffering off;
root html;
index index.html index.htm;
#proxy_buffers 8 4m;
#proxy_busy_buffers_size 25m;
#proxy_buffer_size 512k;
#proxy_ignore_headers "Cache-Control" "Expires";
#proxy_max_temp_file_size 0;
proxy_connect_timeout 300;
proxy_read_timeout 300;
proxy_send_timeout 300;
proxy_intercept_errors off;
proxy_pass http://api;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr;
proxy_set_header X-Forwarded-Proto https;
#proxy_set_header Forwarded "$proxy_add_forwarded;proto=$scheme";
}

这样的,还有:


worker_rlimit_nofile 655350;
events {
worker_connections 5000000;
}

我测的是列表接口,从原接口用 jmeter 给 1000 个线程,原接口得到的吞吐量是 200 多个操作每秒,
但反向代理的接口只有 20 多不说,有 20%的请求返回的是 read timeout
接收数据量原接口是 6MB/s,反向代理出的接口是 500KB/s

测试的时候 nginx 那台机器的 cpu 和内存占用都没什么波动,所以机器性能不够应该不是主要原因

至于说为什么反向代理是因为 nginx 的这台机器才在公网上

反向代理没开缓存是因为这个是个 post 接口,客户端已经发出去了接口不会改为 get 了,并且这里会统计用户访问数所以也不好缓存


就想了解一下反向代理的接口能不能吞吐和原接口接近呢,有没有懂的说说
2842 次点击
所在节点    NGINX
8 条回复
jk1030
2021-01-19 18:44:35 +08:00
1.为什么不考虑下公网的带宽呢
2.加了代理层肯定比原来的差
3.用户访问数不能用 nginx 来统计吗
yeqizhang
2021-01-19 18:47:05 +08:00
多半是你接口问题或者网络问题,并发量设置的一样?
walkfish
2021-01-19 19:58:13 +08:00
http version 设成 1.1,不然没有链接复用
walkfish
2021-01-19 19:58:42 +08:00
proxy_http_version 1.1;
superrichman
2021-01-19 20:16:52 +08:00
你 root 和 proxy_pass 写一起,我猜 nginx 接受每个请求都要把 html 目录扫描一遍,没找到文件才把请求转给你的应用。
coolesting
2021-01-19 21:11:27 +08:00
location / {
#
}

# 这样的写法相当于 -> select * from user ;
# 你说慢不慢呢。。。
qwerthhusn
2021-01-19 21:19:29 +08:00
要用 upstream 的 keepalive
然后 proxy 去 keepalive 连接,会好点
bombless
2021-01-19 22:00:16 +08:00
多谢各位的建议。

我才发现是我测的时候原接口都是在内网测的,反向代理都是走公网的才有这个区别

我直接在内网测反向代理就可以看到其实反向代理之后性能差不多的


但是现在公网那么多 read timeout 也很头疼,但这就是另一个问题了

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

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

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

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

© 2021 V2EX