当前位置: 首页 > 知识库问答 >
问题:

如何提高WebSocket吞吐量

郏瀚
2023-03-14

我需要从很多客户端通过网络套接字连接到java服务器来提取数据。

有很多web套接字实现,我选择了vert。x、 我做了一个简单的演示,在那里我听json的文本帧,用jackson解析它们,然后返回响应。Json解析器对吞吐量没有显著影响。

我的总速度是每秒2.5公里,有2到10个客户。

然后我尝试使用缓冲,客户端不会等待每个响应,而是在服务器确认后发送一批消息(30k-90k),速度提高到每秒8k。

我发现java进程有一个CPU瓶颈——1个内核被100%使用。而nodejs客户端的cpu消耗仅为5%。即使只有一个客户端,服务器也会吃掉几乎整个内核。

你认为值得尝试其他websocket实现,比如jetty吗?有没有办法缩放垂直。多核x?

在我将日志级别从debug改为info后,我有70k。调试级别导致vert。x打印每帧的信息。

共有2个答案

华献
2023-03-14

听起来有些不对劲。这是非常低的性能。听起来像vert。x没有为并行化正确配置。你只使用一根竖线吗?

Kaazing网关是首批WS实现之一。默认情况下,它使用多个内核,并可进一步配置线程等。我们有用户使用它进行大规模物联网部署,因此您的问题不是JVM。如果您感兴趣,以下是github回购协议:https://github.com/kaazing/gateway

充分披露:我为Kaazing工作

戚学
2023-03-14

可以通过配置DeploymentOptions等方式指定垂直(线程)实例的数量http://vertx.io/docs/vertx-core/java/#_specifying_number_of_verticle_instances

你可以在一台机器上创建超过60k个连接,所以我假设一个连接的平均时间不到一秒钟。这是你在生产中期望的情况吗?要比较其他解决方案,可以尝试运行https://github.com/smallnest/C1000K-Servers

 类似资料:
  • 本文向大家介绍springboot高并发下提高吞吐量的实现,包括了springboot高并发下提高吞吐量的实现的使用技巧和注意事项,需要的朋友参考一下 公司让做一个全文检索的项目,我使用的是elasticsearch。但是对性能有很高的要求,为了解决性能问题,我简直是寝食难安。 es(elasticsearch)没有使用分布式,单台的。 开发完测试的时候,查询慢,吞吐量低。 网友们建议用异步--使

  • 我正在对ElasticSearch进行基准测试,以实现非常高的索引吞吐量。 我目前的目标是能够在几个小时内索引30亿(3,000,000,000)文档。为此,我目前有3台windows服务器机器,每台16GB内存和8个处理器。插入的文档有一个非常简单的映射,只包含少数数字非分析字段(被禁用)。 使用这个相对适中的钻机,我能够达到每秒大约120,000个索引请求(使用大桌子监控),我相信吞吐量可以进

  • 问题内容: 我知道这是一个非常笼统的问题。但是,我想了解使Redis(或诸如MemCached,Cassandra之类的缓存)在惊人的性能极限下工作的主要架构决策是什么。 如何维护连接? 连接是TCP还是HTTP? 我知道它完全用C编写。如何管理内存? 尽管存在竞争的读/写,但用于实现高吞吐量的同步技术有哪些? 基本上,具有内存高速缓存的计算机和可以响应命令的服务器的普通香草实现和Redis框之间

  • 本文向大家介绍Kafka 是如何实现高吞吐率的?相关面试题,主要包含被问及Kafka 是如何实现高吞吐率的?时的应答技巧和注意事项,需要的朋友参考一下 Kafka是分布式消息系统,需要处理海量的消息,Kafka的设计是把所有的消息都写入速度低容量大的硬盘,以此来换取更强的存储能力,但实际上,使用硬盘并没有带来过多的性能损失。kafka主要使用了以下几个方式实现了超高的吞吐率: 顺序读写; 零拷贝

  • null 基本上,具有内存缓存和可以响应命令的服务器的机器的普通香草实现和Redis盒子之间有什么区别?我也明白答案需要非常庞大,并且应该包括非常复杂的细节来完成。但是,我要找的是一些通用的技术,而不是所有的细微差别。

  • 这些天我试图使用JMeter做负载测试。有一个非常令人困惑的点我不明白:分布式环境: 1。运行JMeter Server 2的3台8 CPU 16G服务器。4 CPU 8G服务器运行JMeter 3.这些服务器在同一个子网上。 线程组设置:线程数:2000爬升:0循环:10吞吐量为3000/s 另一个线程组:线程数:2000提升:1循环:10吞吐量为5000/s 另一个线程组:线程数:2000爬升