CNode

post返回数据过大导致响应超时有什么好的办法(终于搞定)

问答
Hhfqf发布于10 年前最后回复9 年前23 回复14562 浏览0 收藏

** / * 查询所有记录 **/ router.post('/queryAll',function (req, res, next) { var conditions = {owner:req.body.owner}; Repair.find(conditions,function (err,ret) { if(err){ return res.send(global.retFormate(0,err,'查询数据失败')); } else { return res.send(global.retFormate(1,ret,'查询数据成功')); } });

    }),****
	

这个接口在数据很少时一切正常,现在达到一百多时就无响应了 ,不知道原因, 谢谢!

附上db: untitled1.png

附上接口调用时长(应该是repair/queryAll超时,本地数据被改过了,两者现象都是一样的): untitled1.png

折腾了几天终于好了:将mongoose由4.1.2升级到了4.7.7,也是试试的,居然好了,好坑,还是不知道之前为什么不行的原因,算了,先这样吧。 untitled1.png

查看回复

回复 (23)

D
DevinXian#1·10 年前

@hfqf post数据是什么,这么大

H
hfqf#2·10 年前
引用 DevinXian@hfqf post数据是什么,这么大

@DevinXian 用户每次换设备后登录需要同步数据,联系人,维修记录,成百上千的。

N
ntfs32#3·10 年前

如果过长时间响应代理nginx超时加长,或者文件过大断点续传支持下?

H
hfqf#4·10 年前
引用 ntfs32如果过长时间响应代理nginx超时加长,或者文件过大断点续传支持下?

@ntfs32 谢谢 我是小白 先查查相关概念 理理思路

W
winglight#5·10 年前
引用 hfqf@ntfs32 谢谢 我是小白 先查查相关概念 理理思路

@hfqf 考虑一下优化业务流程吧,如果不是经常换手机,可以使用下载sqlite数据库文件的方式,如果是经常换,可以分步下载,先下载必须的,再由用户操作决定下一步要同步的数据等等

S
SHocker-Yu#6·10 年前

multiparty

H
hfqf#7·10 年前
引用 SHocker-Yumultiparty

@SHocker-Yu 你说的这个好像是用于请求的数据的吧 我那个是返回数据太长而没有任何相应的问题

2
2015-lizaiyang#8·10 年前

用nodejs中的流的,或者分成一下小块一小块数据,连环请求。

S
slclub#10·10 年前

得由多大哦;json 数据,可以想办法分成多个post 请求传过去; 重新设计返回json的数据

H
hfqf#11·10 年前
引用 winglight@hfqf 考虑一下优化业务流程吧,如果不是经常换手机,可以使用下载sqlite数据库文件的方式,如果是经常换,可以分步下载,先下载必须的,再由用户操作决定下一步要同步的数据等等

@winglight 确实不是经常需要换手机,但是分布下载体验不太好吧,可能数据会很多。到底能不能一次返回所有数据呢,这个问题大家应该都会遇到过的吧。

H
hfqf#12·10 年前
引用 2015-lizaiyang用nodejs中的流的,或者分成一下小块一小块数据,连环请求。

@2015-lizaiyang 用流的话 我想到了 但是还不知道具体该如何写 连环请求肯定是可以的 但是觉得用户体验不是太好 登录后可能等好久才能刷新页面 。我现在很是疑问:到底能不能一次返回所有数据呢,这个问题大家应该都会遇到过的吧。

L
lumia2046#13·10 年前
H
hfqf#14·10 年前
引用 slclub得由多大哦;json 数据,可以想办法分成多个post 请求传过去; 重新设计返回json的数据

@slclub 多个请求肯定是可以的 但是觉得用户体验不是太好 登录后可能等好久才能刷新页面 。我现在很是疑问:到底能不能一次返回所有数据呢,这个问题大家应该都会遇到过的吧。

H
hfqf#16·10 年前
2
2015-lizaiyang#17·10 年前
引用 hfqf@2015 lizaiyang 用流的话 我想到了 但是还不知道具体该如何写 连环请求肯定是可以的 但是觉得用户体验不是太好 登录后可能等好久才能刷新页面 。我现在很是疑问:到底能不能一次返回...

@hfqf 您这个只能用node中的流,会比较好,不然就是把数据切成小块,分步交互,不然,用户的网络如果太慢,那就尴尬了。

H
hfqf#18·10 年前
引用 2015-lizaiyang@hfqf 您这个只能用node中的流,会比较好,不然就是把数据切成小块,分步交互,不然,用户的网络如果太慢,那就尴尬了。

@2015-lizaiyang 用流去做,我可以去了解,查资料。但是这个post返回数据到底有没有限制,还是只是express它自己做了限制,还是中间件做了限制,这个很关键,不知道你知不知道,再次感谢。

H
hfqf#19·10 年前

折腾了几天终于好了:将mongoose由4.1.2升级到了4.7.7,也是试试的,居然好了,好坑,还是不知道之前为什么不行的原因,算了,先这样吧。

untitled1.png

W
winglight#20·9 年前
引用 hfqf折腾了几天终于好了:将mongoose由4.1.2升级到了4.7.7,也是试试的,居然好了,好坑,还是不知道之前为什么不行的原因,算了,先这样吧。

@hfqf 一直以为你的问题出在web层,结果是数据库连接的问题啊,一般定位这种问题都是要先排除一下db查询的问题了,类似执行计划这种

H
hfqf#23·9 年前

hah

参与回复
登录后即可参与回复。登录