`

RabbitMQ调优系列2 为大量连接进行调整

 
阅读更多
RabbitMQ调优系列2   为大量连接进行调整


Some workloads, often referred to as "the Internet of Things", assume a large number of client connections per node, and a relatively low volume of traffic from each node. One such workload is sensor networks: there can be hundreds of thousands or millions of sensors deployed, each emitting data every several minutes. Optimising for the maximum number of concurrent clients can be more important than for total throughput.
【有些工作负载(通常称之为“物联网”)假定每个服务器节点有大量的客户端连接,并且每个节点的流量相对较低。像这样的工作负载比如传感器网络:部署的传感器可能有数十万或数百万个,每几分钟发送一次数据。优化并发客户端连接的最大数量比优化总吞吐量更重要。】

Several factors can limit how many concurrent connections a single node can support:
【通常有以下几个因素可以限制单个节点支持的并发连接数:】
  • Maximum number of open file handles (including sockets) as well as other kernel-enforced resource limits
  • Amount of RAM used by each connection
  • Amount of CPU resources used by each connection
  • Maximum number of Erlang processes the VM is configured to allow

  • 操作系统可打开的文件句柄(包括套接字)的最大数量以及其他内核强制资源限制的最大数量
  • 每个连接使用的RAM大小
  • 每个连接使用的CPU资源
  • Erlang虚拟机允许配置的最大Erlang进程数

  • 一、限制打开的文件句柄数量

    Most operating systems limit the number of file handles that can be opened at the same time. When an OS process (such as RabbitMQ's Erlang VM) reaches the limit, it won't be able to open any new files or accept any more TCP connections.
    【很多操作系统都限制了在同一时刻可打开的文件句柄数量。当一个操作系统进程(例如RabbitMQ的 Erlang VM进程)达到了该限制,那么该进程将不能够打开任何新的文件或者接受更多的TCP连接。】

    How the limit is configured varies from OS to OS and distribution to distribution, e.g. depending on whether systemd is used. For Linux, Controlling System Limits on Linux in our Debian and RPM installation guides provides. Linux kernel limit management is covered by many resources on the Web, including the open file handle limit.

    With Docker, Docker daemon configuration file in the host controls the limits.

    MacOS uses a similar system.

    On Windows, the limit for the Erlang runtime is controlled using the ERL_MAX_PORTS environment variable.

    When optimising for the number of concurrent connections, making sure your system has enough file descriptors to support not only client connections but also files the node may use. To calculate a ballpark limit, multiply the number of connections per node by 1.5. For example, to support 100,000 connections, set the limit to 150,000. Increasing the limit slightly increases the amount of RAM idle machine uses but this is a reasonable trade-off.
    分享到:
    评论

    相关推荐

      RabbitMQ

      在本文中,我们将深入探讨RabbitMQ的核心概念、工作原理以及如何进行性能测试和调优。 **核心概念** 1. **Broker**: RabbitMQ服务器就是消息队列的Broker,负责接收、存储和转发消息。 2. **Exchange**: 消息的...

      RabbitMQ消息中间件技术精讲

      2. **性能调优**:通过对队列长度、内存使用等参数进行调整,优化系统性能。 3. **监控与报警**:利用监控工具定期检查RabbitMQ的状态,及时发现并解决问题。 通过以上详细介绍,我们不仅了解了RabbitMQ的基础知识...

      rabbitmq面试题.pdf

      - 使用`rabbitmqadmin`等工具进行数据恢复。 **34. RabbitMQ的日志文件存储了哪些信息?** - 包括但不限于启动日志、错误日志、审计日志等。 **35. 如何配置RabbitMQ的访问控制和权限?** - 利用用户账号和权限...

      mysql高并发解决方案

      5. **异步处理**:对于耗时的操作,如大批量数据更新,可以采用消息队列(如RabbitMQ或Kafka)进行异步处理,避免阻塞主线程。 6. **数据库复制**:通过主从复制,实现数据备份和负载均衡。在读多写少的场景下,...

      emq_plugin_kafka_ekaf

      在使用过程中,你可能需要对Kafka和EMQ的性能进行调优,以确保在大规模并发场景下的稳定性和效率。这可能涉及到调整队列长度、设置合适的批处理大小、优化网络通信等。 总结来说,`emq_plugin_kafka_ekaf` 插件是...

      优化篇互联网架构及性能.rar

      2. **JVM调优**:Java虚拟机(JVM)是Java应用程序的基础,对其进行调优可以显著提高应用性能。JVM调优主要包括堆内存分配、垃圾回收器选择、类加载机制调整、线程池配置等方面。理解垃圾收集的工作原理,比如新生代...

      【完整版15章】聚焦Java性能优化 打造亿级流量秒杀系统(附赠秒杀项目)

      3. **JVM调优**:调整JVM参数,如堆大小、新生代和老年代的比例,启用G1或CMS垃圾收集器以减少停顿时间。 4. **并发编程**:利用Java并发库,如线程池、Future、CompletableFuture等,有效管理并发任务。 5. **缓存...

      高并发解决方案

      12. **监控与调优**:实时监控系统性能指标,如CPU使用率、内存占用、网络带宽等,及时发现问题并进行调优。 综上所述,解决高并发问题需要综合运用多种技术和策略,根据具体业务场景选择合适的方法,不断优化和...

      B/S网站优化设计

      2. **队列服务**:当用户请求到达时,将购买请求放入消息队列(如RabbitMQ或Kafka),后台服务按照顺序处理队列中的请求,这样可以避免瞬间高并发对系统造成冲击。 3. **缓存**:使用缓存(如Redis或Memcached)...

      java架构师是什么?58套java架构师资源870G进阶架构师学习.pdf

      例如,使用Nginx进行负载均衡,通过JVM参数调整进行性能优化,以及利用缓存技术如Redis和Memcached提升响应速度。 数据库是任何应用的基础,Java架构师需要精通多种数据库技术,包括关系型数据库MySQL、Oracle,...

      性能测试岗位常见面试题.docx

      - **LoadRunner**:商业性能测试工具,支持多种协议,能模拟大量并发用户,进行系统性能验证。 - **其他工具**:如Ngrinder、Locust、Wrk、Artillery等,各有特色,适合不同场景和需求。 7. **系统架构**: - **...

      Java高级架构必备知识点

      它能够将大量的访问请求均匀地分散到多个服务器上进行处理,从而避免单一服务器过载。 - **轮询算法**:最简单的负载均衡算法之一,按照顺序依次将请求分发到后端服务器。 - **最少连接数算法**:根据当前服务器已...

      Java游戏服务端执行引擎.zip

      2. **网络通信**:游戏服务端需要与客户端进行实时交互,因此对Socket编程有深入理解至关重要。TCP/IP协议用于建立可靠的连接,而UDP协议则常用于实现更低延迟的数据传输。NIO(非阻塞I/O)和Netty框架也是提高网络...

      分布式系统--网络与通信

      分布式系统是一种由多台计算机和硬件设备通过网络相互连接,协同工作以实现共同目标的计算模型。在“网络与通信”这一章节中,我们将深入探讨分布式系统中的关键概念和技术,这些内容对于理解和构建大规模、高可用的...

      20-BAT面试题汇总及详解(进大厂必看).docx

      NIO(Non-blocking I/O)适用于大量连接、低延迟的场景,它允许程序在等待I/O操作完成时执行其他任务。Java9引入了模块系统、JShell(REPL)和HTTP/2客户端等改进。 HashMap内部使用数组+链表/红黑树的数据结构实现...

      大交易

      3. **JVM调优**:对于处理大量数据的系统,Java虚拟机(JVM)的优化至关重要。这包括堆内存设置(新生代、老年代大小),GC策略调整(G1、CMS、Parallel GC等),以及监控和诊断工具(VisualVM、JConsole等)的使用...

      spring-boot-demo

      它集成了大量常用的第三方库配置,如JDBC、MongoDB、JPA、RabbitMQ、Quartz等,通过“约定优于配置”的理念,让开发者可以快速地创建一个独立的、生产级别的基于Spring的应用。 本文将围绕"spring-boot-demo"这一...

    Global site tag (gtag.js) - Google Analytics