V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MrMike
V2EX  ›  PHP

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

  •  
  •   MrMike · 2020-04-23 01:40:16 +08:00 · 3097 次点击
    这是一个创建于 1686 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    12 条回复    2020-04-26 09:18:27 +08:00
    luckyrayyy
        1
    luckyrayyy  
       2020-04-23 01:48:42 +08:00
    做这么一个限制还不让改也太睿智了.....
    首先,先确定你的方向没有问题,有其他项目在运行也不等于不能动吧。
    另外,如果确定只能用现在的方案,那没很大优化空间,你试出来最大长度,然后一次一次来呗。要是只对单次长度做了限制而服务器负载压力很小,就在前端做个异步,直接几十个请求过去。
    tanranran
        2
    tanranran  
       2020-04-23 01:50:10 +08:00
    压缩数据,然后 POST 上传给服务器
    mingl0280
        3
    mingl0280  
       2020-04-23 04:41:26 +08:00 via Android
    手写个 websocket 传呗……
    xuanbg
        4
    xuanbg  
       2020-04-23 06:09:30 +08:00
    这不是 hash 算法大干快上的时候么?客户端算一个哈希上传,服务端也算一个哈希出来比对就行了呀。只是需要注意双方计算哈希的时候,对象序列化后属性的顺序可能不一致的问题。
    kaiki
        5
    kaiki  
       2020-04-23 06:36:12 +08:00
    服务端不能动只能客户端用队列了
    MrMike
        6
    MrMike  
    OP
       2020-04-23 07:18:18 +08:00
    @luckyrayyy 目前已经是以最大的值进行请求了的
    MrMike
        7
    MrMike  
    OP
       2020-04-23 07:18:48 +08:00
    @kaiki
    @mingl0280 谢谢,试试。
    brader
        8
    brader  
       2020-04-23 10:33:25 +08:00
    如果服务端完全不能动的话,那你客户端可以做 2 个事情:
    brader
        9
    brader  
       2020-04-23 10:34:57 +08:00
    1:限制请求频率(通过定时器)
    2:单次请求利用最大化,每次打包请求的时候,尽可能多的打包几条数据,比如:服务端上限是 1000 字符,那你客户端,看下在 1000 字符以内,尽量装多几条数据,可以提高效率
    dongisking
        10
    dongisking  
       2020-04-23 13:17:28 +08:00 via Android
    定时器一秒请求一次咯?
    tabris17
        11
    tabris17  
       2020-04-23 13:21:29 +08:00
    异步处理啊
    MrMike
        12
    MrMike  
    OP
       2020-04-26 09:18:27 +08:00
    问题解决了,用异步处理了。谢谢各位大佬的帮助,结贴。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5008 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 09:46 · PVG 17:46 · LAX 01:46 · JFK 04:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.