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

請(qǐng)問(wèn)下webman怎么做能讓接口qps做到1W

晚安。

問(wèn)題描述

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

現(xiàn)在我們對(duì)接了他的接口,然后給外部提供了這個(gè)接口,接口延時(shí)必須在100毫秒內(nèi),現(xiàn)在只能做到qps500以?xún)?nèi),超過(guò)延時(shí)就跟大了

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

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

1697 5 2
5個(gè)回答

six

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

  • 晚安。 2023-12-06

    接口返回?cái)?shù)據(jù)是124b

  • six 2023-12-06

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

  • 晚安。 2023-12-06

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

  • six 2023-12-06

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

胡桃

協(xié)程

  • 暫無(wú)評(píng)論
chaz6chez

如果第三方接口支持keep alive,你就做長(zhǎng)連接客戶(hù)端,當(dāng)你自己的服務(wù)啟動(dòng)時(shí)就激活;
這樣相當(dāng)于你只是個(gè)gateway向第三方接口發(fā)包而已;
更多的消耗就在網(wǎng)絡(luò)層了,因?yàn)檫壿媽討?yīng)該你們也沒(méi)有什么復(fù)雜邏輯。

請(qǐng)求/響應(yīng)日志發(fā)到隊(duì)列,隊(duì)列去做異步儲(chǔ)存

  • 晚安。 2023-12-06

    1臺(tái)多高的服務(wù)器能抗住還是要負(fù)載均衡部署下

  • 晚安。 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)在是這樣寫(xiě)的

  • chaz6chez 2023-12-06

    如果對(duì)方支持keep alive,那你的客戶(hù)端每次都不要new,做單例長(zhǎng)連接,避免每次都要建立連接

  • 晚安。 2023-12-06

    要怎么寫(xiě)一下

  • chaz6chez 2023-12-06

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

  • 晚安。 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); 在這個(gè)post之前還有這些new 是不是也要改成單列
  • chaz6chez 2023-12-06

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

  • 晚安。 2023-12-06

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

  • chaz6chez 2023-12-06

    那這些不必,只需要減少網(wǎng)絡(luò)連接的創(chuàng)建和銷(xiāo)毀即可,通常來(lái)說(shuō)網(wǎng)絡(luò)連接的創(chuàng)建和銷(xiāo)毀是最耗時(shí)的,其他的其實(shí)沒(méi)太大影響,復(fù)用tcp連接就行了

  • 晚安。 2023-12-06

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

  • 晚安。 2023-12-06

    非常感謝

  • chaz6chez 2023-12-06

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

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

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

  • TM 2023-12-07

    學(xué)習(xí)

  • 晚安。 2023-12-11

    請(qǐng)問(wèn)下還有什么方案可以限制的我對(duì)外接口的qps,比如我設(shè)置5000,超過(guò)的請(qǐng)求我全部丟棄,也不返回?cái)?shù)據(jù),因?yàn)榉祷財(cái)?shù)據(jù)也會(huì)占用服務(wù)器帶寬

  • 晚安。 2023-12-11

    限制所有人不是單ip,所有請(qǐng)求1秒內(nèi)不能超過(guò)5000,超過(guò)就全部丟棄,也不返回?cái)?shù)據(jù)

  • nitron 2023-12-11

    令牌桶

smile1

多起幾個(gè)pod

  • 暫無(wú)評(píng)論
tanhongbin

先加大進(jìn)程試試 把cpu 和 內(nèi)存拉滿(mǎn)試試看 還是不行 在上協(xié)程再試試 ,你這個(gè)直接請(qǐng)求第三方?jīng)]有其他操作,可以試一下協(xié)程 ,如果還是不行加機(jī)器吧

  • 暫無(wú)評(píng)論
年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表回答
??