第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

AWS / Lambda / Java 上的 Elasticsearch 客戶端

AWS / Lambda / Java 上的 Elasticsearch 客戶端

函數(shù)式編程 2022-07-20 10:01:19
我們使用 AWS Lambda (Java) 和 elasticsearch 客戶端連接到 AWS 上托管的 elasticsearch 實例。我在第一個請求上遇到了大約 2.5 秒的長時間等待(在冷啟動之上)。之后它非??臁N艺娴牟恢肋@個延遲是從哪里來的,我正在嘗試優(yōu)化它。private void testPerformanceElasticSearch() throws Exception {        log.info("1. Before testing elasticsearch client");        AWS4Signer signer = new AWS4Signer();        signer.setServiceName("es");        signer.setRegionName("eu-west-1");        HttpRequestInterceptor interceptor = new AWSRequestSigningApacheInterceptor("es", signer, new DefaultAWSCredentialsProviderChain());        String endpoint = "https://" + Utils.getEnvironmentVariable("ELASTIC_SEARCH_ENDPOINT");        RestHighLevelClient restHighLevelClient = new RestHighLevelClient(RestClient.builder(HttpHost.create(endpoint)).setHttpClientConfigCallback(hacb -> hacb.addInterceptorLast(interceptor)));        log.info("2. After getting elasticsearch client");        log.info("3. Before doing a elasticsearch query");        log.info("4");        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();        log.info("5");        TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery("userId", "abc");        log.info("6");        boolQueryBuilder.must(termsQueryBuilder);        log.info("7");        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();        log.info("8");        searchSourceBuilder.query(boolQueryBuilder);        log.info("9");        SearchRequest searchRequest = new SearchRequest("users");        log.info("10");        searchRequest.source(searchSourceBuilder);        log.info("11");        restHighLevelClient.search(searchRequest);        log.info("12");        log.info("13. After testing elasticsearch");}關(guān)于如何改進這一點的任何建議?
查看完整描述

2 回答

?
qq_遁去的一_1

TA貢獻1725條經(jīng)驗 獲得超8個贊

問題是在第一個請求(真正的請求,而不是預(yù)熱請求,因為預(yù)熱請求不會通過您的應(yīng)用程序代碼,它不會觸發(fā)加載實際請求路徑中使用的類)JVM 加載(讀取、解析、驗證等...)相關(guān)類,初始化安全組件(密碼等...)并完成 TLS 握手(需要多個 RTT,使用 Java 9 和 TLS 1.3,這應(yīng)該減少)。

首次 AWS 服務(wù)調(diào)用(DynamoDB、SQS 等)也出現(xiàn)了類似的長時間行為

由于我是 Thundra 預(yù)熱插件的作者,我正在考慮為預(yù)熱消息引入掛鉤點,因為自定義操作將能夠執(zhí)行,如初始化安全組件、加載類等......


查看完整回答
反對 回復(fù) 2022-07-20
?
慕尼黑的夜晚無繁華

TA貢獻1864條經(jīng)驗 獲得超6個贊

VPC 內(nèi)的 Lambda 函數(shù)對啟動時間有很大影響。您說您的 ES 是托管實例,所以我假設(shè)它由 VPC 支持。

即使不在 VPC 中,Java 冷啟動通常也比 Node 或 Python 等運行時長,因為需要先啟動 JVM。這主要是您的 2.5 秒的來源。

好的。如何解決問題?

這取決于 ElasticSearch 需要多少并發(fā)連接。如果一個函數(shù)能夠處理所有傳入請求,那么您可以將 Lambda 函數(shù)的并發(fā)執(zhí)行限制為 1,因此您可以確保始終訪問同一個容器(只要這些請求是在 ±5 分鐘內(nèi)發(fā)出的)大體時間)。

現(xiàn)在,如果您事先不知道將執(zhí)行多少并發(fā) Lambda 函數(shù),那么您就沒有出路了。您可以嘗試預(yù)先預(yù)熱您的 Lambda 函數(shù),但是您需要同時觸發(fā) 100 個請求來預(yù)熱 100 個不同的容器。

當(dāng)我瀏覽 Lambda 函數(shù)的并發(fā)模型以及冷/熱啟動如何工作時,請檢查此答案。

如果您有更多信息要分享或者我不夠清楚,我很樂意編輯我的答案。


查看完整回答
反對 回復(fù) 2022-07-20
  • 2 回答
  • 0 關(guān)注
  • 117 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號