国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

請問下webman怎么做能讓接口qps做到1W

晚安。

問題描述

現(xiàn)在對接了1個第三方接口,他們接口響應很快qps可以支持到2w,他們接口延時是30ms

現(xiàn)在我們對接了他的接口,然后給外部提供了這個接口,接口延時必須在100毫秒內,現(xiàn)在只能做到qps500以內,超過延時就跟大了

中間的邏輯就是,拿到第三方接口的數(shù)據(jù),判斷之后實時返回

現(xiàn)在webman是單機部署,12核24g,50兆帶寬
請問還有什么方案可以提高我接口的qps

1659 5 3
5個回答

six

走外網有網絡延遲,壓不出來,除非加大并發(fā)。
建議先內網壓,量夠了在外網壓,否則你不好定位問題。
不知道你接口返回數(shù)據(jù)多大,1萬QPS 50M帶寬有可能不夠

  • 晚安。 2023-12-06

    接口返回數(shù)據(jù)是124b

  • six 2023-12-06

    現(xiàn)在你的服務器ab壓測第三方接口,看下能壓到多少,先不走webman

  • 晚安。 2023-12-06

    第三方接口只能從代碼程序端發(fā)起他們接口是這個protobuf協(xié)議,不能直接發(fā)起請求

  • six 2023-12-06

    第三方接口不是http協(xié)議?

胡桃

協(xié)程

  • 暫無評論
chaz6chez

如果第三方接口支持keep alive,你就做長連接客戶端,當你自己的服務啟動時就激活;
這樣相當于你只是個gateway向第三方接口發(fā)包而已;
更多的消耗就在網絡層了,因為邏輯層應該你們也沒有什么復雜邏輯。

請求/響應日志發(fā)到隊列,隊列去做異步儲存

  • 晚安。 2023-12-06

    1臺多高的服務器能抗住還是要負載均衡部署下

  • 晚安。 2023-12-06

    $url = '';
    $client = new \GuzzleHttp\Client();
    $response = $client->post($url, [
    'body' => $serializedRequest,
    'headers' => ['Content-Type' => 'application/x-protobuf']
    ]);
    $serializedResponse = $response->getBody()->getContents();
    現(xiàn)在是這樣寫的

  • chaz6chez 2023-12-06

    如果對方支持keep alive,那你的客戶端每次都不要new,做單例長連接,避免每次都要建立連接

  • 晚安。 2023-12-06

    要怎么寫一下

  • chaz6chez 2023-12-06

    基于http的keep alive,你要先確認對方是否支持keep alive;
    然后guzzle帶上頭Connection keep alive;
    然后創(chuàng)建的client對象用單例實現(xiàn),具體可自行百度,大概就是靜態(tài)屬性儲存,判斷是否是null,如果是就new,如果不是就拿來直接用

  • 晚安。 2023-12-06

    支持的keep alive;

  • 晚安。 2023-12-06
        $request = new HEC();
        $request->setRequestId($request_id);
        $request->setChannel('999');
        $request->setRequestTime($request_time);
        $device = new PLI();
        $device->setImei($imei); 在這個post之前還有這些new 是不是也要改成單列
  • chaz6chez 2023-12-06

    只需要保證你創(chuàng)建的連接是復用就行了,我不清楚HEC PLI這些地方是否有涉及到連接的創(chuàng)建,但client那里是有涉及到網絡連接的

  • 晚安。 2023-12-06

    HEC PLI 這些實例化 就是剛剛設置那些字段設置參數(shù)值

  • chaz6chez 2023-12-06

    那這些不必,只需要減少網絡連接的創(chuàng)建和銷毀即可,通常來說網絡連接的創(chuàng)建和銷毀是最耗時的,其他的其實沒太大影響,復用tcp連接就行了

  • 晚安。 2023-12-06

    厲害了大佬 改成單例,配置沒變性能提高了40%呀

  • 晚安。 2023-12-06

    非常感謝

  • chaz6chez 2023-12-06

    你的這些HEC PLI等對象數(shù)據(jù)內容如果都是通過get set來進行賦值而不是依賴默認值的話,其實也可以做成單例,復用這些對象,畢竟對象是占用php的堆,依賴php自身的GC的,同樣可以提高性能。

    這也就是為什么很多框架有DI容器,主要是為了復用所創(chuàng)建出來的對象,避免整體框架過多的創(chuàng)建和銷毀對象,從而給php的gc帶來比較大的清理壓力,這樣的思路同樣適用于java體系。

    在底層需要了解那些是分配在堆上,哪些分配在棧上,語言的GC方案是如何的,從而就可以寫出一些性能較高的業(yè)務

  • TM 2023-12-07

    學習

  • 晚安。 2023-12-11

    請問下還有什么方案可以限制的我對外接口的qps,比如我設置5000,超過的請求我全部丟棄,也不返回數(shù)據(jù),因為返回數(shù)據(jù)也會占用服務器帶寬

  • 晚安。 2023-12-11

    限制所有人不是單ip,所有請求1秒內不能超過5000,超過就全部丟棄,也不返回數(shù)據(jù)

  • nitron 2023-12-11

    令牌桶

smile1

多起幾個pod

  • 暫無評論
tanhongbin

先加大進程試試 把cpu 和 內存拉滿試試看 還是不行 在上協(xié)程再試試 ,你這個直接請求第三方沒有其他操作,可以試一下協(xié)程 ,如果還是不行加機器吧

  • 暫無評論
年代過于久遠,無法發(fā)表回答
??