亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

Netty 請求超時

Netty 請求超時

慕少森 2021-06-09 14:13:42
我正在嘗試編寫一個 HTTP 服務,該服務將從 HTTP 獲取數據并使用 Netty 將其放入 Kafka。我需要在 m5.large EC2 實例上處理 20K RPS,這似乎非常可行。代碼很簡單:Server.javapublic class Server {    public static void main(final String[] args) throws Exception {        final EventLoopGroup bossGroup = new EpollEventLoopGroup();        final EventLoopGroup workerGroup = new EpollEventLoopGroup();        try {            final ServerBootstrap bootstrap = new ServerBootstrap();            bootstrap                .group(bossGroup, workerGroup)                .channel(EpollServerSocketChannel.class)                .childHandler(new RequestChannelInitializer(createProducer()))                .childOption(ChannelOption.SO_KEEPALIVE, true);            bootstrap.bind(PORT).sync().channel().closeFuture().sync();        } finally {            bossGroup.shutdownGracefully();            workerGroup.shutdownGracefully();        }    }    private static Producer<String, ByteBuffer> createProducer() {        final Properties properties = new Properties();        properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, KAFKA_HOST);        properties.put(ProducerConfig.CLIENT_ID_CONFIG, "KafkaBidRequestProducer");        properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());        properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, ByteBufferSerializer.class.getName());        properties.put(ProducerConfig.RETRIES_CONFIG, 0);    }}代碼取自官方文檔。但是,有時我會Request 'Post BidRequest' failed: j.u.c.TimeoutException: Request timeout after 60000 ms在負載測試中遇到異常。據我了解,這意味著在我的負載測試實例和服務實例之間建立了連接,但完成時間超過 60 秒。這個簡單程序的哪一部分可以阻塞這么長時間?我已經調整了 Kafka 制作人:減少了它的超時時間。我知道這send可能會阻塞,所以我增加了發送緩沖區,但沒有幫助。我也增加ulimits了服務用戶。我在 OpenJDK 版本 1.8.0_171 上運行并securerandom.source設置為file:/dev/urandom,因此randomUUID不應阻止對 的調用。
查看完整描述

1 回答

?
慕森王

TA貢獻1777條經驗 獲得超3個贊

你說得對,里面沒有什么東西可以阻擋。發送到 Kafka 的調用是異步的。我查看了您的代碼,從我所看到的一切看起來都不錯。

我要檢查的幾件事:

  • 確保 AWS 中的安全組定義允許 Kafka 服務器和應用程序與 Zookeeper 通信。如果這是一個測試/POC,您應該只允許所有三個實例/集群之間的所有流量。60 秒超時讓我懷疑網絡超時,這可能意味著某些服務無法訪問。

  • 您是否嘗試過更簡單的測試,嘗試在沒有 Netty 依賴的情況下對 Kafka 進行生產?也許這有助于縮小問題的范圍。


查看完整回答
反對 回復 2021-06-30
  • 1 回答
  • 0 關注
  • 368 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號