如何优化远程获取请求数据过大造成服务器报错的问题?

2020-04-23 01:40:16 +08:00
 MrMike

因为项目需要,需要从本地提交数据到远程服务器上,然后远程服务器对提交的数据对比后,再返回数据给本地,本地再存储到数据库中。

本地环境是 Linux + Nginx 1.6 + MySQL 5.6 + PHP 7.3 。 本地每次提交的数据有几百条数据,远程服务器对请求的数据长度有要求,本地需要提交的数据每一条数据都超过了远程的数据长度要求,所以目前只能一条条的发送请求,一旦请求的次数过多( 5 条),本地服务器就会报 502 错误。

请教下,怎么优化这个数据提交的流程呢?远程服务器因为有其他项目在运行,不能修改其配置,只能本地去配合远程进行优化。

3079 次点击
所在节点    PHP
12 条回复
luckyrayyy
2020-04-23 01:48:42 +08:00
做这么一个限制还不让改也太睿智了.....
首先,先确定你的方向没有问题,有其他项目在运行也不等于不能动吧。
另外,如果确定只能用现在的方案,那没很大优化空间,你试出来最大长度,然后一次一次来呗。要是只对单次长度做了限制而服务器负载压力很小,就在前端做个异步,直接几十个请求过去。
tanranran
2020-04-23 01:50:10 +08:00
压缩数据,然后 POST 上传给服务器
mingl0280
2020-04-23 04:41:26 +08:00
手写个 websocket 传呗……
xuanbg
2020-04-23 06:09:30 +08:00
这不是 hash 算法大干快上的时候么?客户端算一个哈希上传,服务端也算一个哈希出来比对就行了呀。只是需要注意双方计算哈希的时候,对象序列化后属性的顺序可能不一致的问题。
kaiki
2020-04-23 06:36:12 +08:00
服务端不能动只能客户端用队列了
MrMike
2020-04-23 07:18:18 +08:00
@luckyrayyy 目前已经是以最大的值进行请求了的
MrMike
2020-04-23 07:18:48 +08:00
@kaiki
@mingl0280 谢谢,试试。
brader
2020-04-23 10:33:25 +08:00
如果服务端完全不能动的话,那你客户端可以做 2 个事情:
brader
2020-04-23 10:34:57 +08:00
1:限制请求频率(通过定时器)
2:单次请求利用最大化,每次打包请求的时候,尽可能多的打包几条数据,比如:服务端上限是 1000 字符,那你客户端,看下在 1000 字符以内,尽量装多几条数据,可以提高效率
dongisking
2020-04-23 13:17:28 +08:00
定时器一秒请求一次咯?
tabris17
2020-04-23 13:21:29 +08:00
异步处理啊
MrMike
2020-04-26 09:18:27 +08:00
问题解决了,用异步处理了。谢谢各位大佬的帮助,结贴。

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

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

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

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

© 2021 V2EX