- 浏览: 137136 次
- 性别:
- 来自: 深圳
文章分类
最新评论
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
【
一、限制打开的文件句柄数量
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.
发表评论
-
Threadlocals and memory leaks in J2EE
2020-03-03 01:10 259Threadlocals are used in J2EE a ... -
Mybatis Plus 高级用法
2019-12-09 16:01 957以下文章记录 ... -
Rabbitmq心跳机制与配置
2019-09-19 17:02 1624Rabbitmq 心跳机制与配置 默认情况下,在3.5 ... -
RabbitMQ调优系列1 调整I/O线程线程池
2019-06-23 22:03 1072RabbitMQ调优系列1 调整I/O线程线程池 Er ... -
MySQLSQL优化最佳实践和建议
2019-03-24 22:57 657总结一下项目中经常使用的MySQL SQL优化最佳实践 1. ... -
Hibernate中的持久化对象状态说明
2019-03-18 00:04 476Hibernate框架中为持久化的对象设计了三种状态,处于这三 ... -
Git 常见用法记录
2019-02-23 22:04 442记录Git常见用法 ... -
JPA规范 AccessType.PROPERTY与AccessType.FIELD的区别
2018-08-06 20:30 848AccessType 来自JPA规范中EJB部分,该部分规范 ... -
Square Cube 系统注意事项
2015-07-29 15:06 868Cube是一个采集基于时间的事件数据并时行度量分析的系 ... -
Java Web- Changes Between SOAP 1.1 and SOAP 1.2
2015-05-25 15:43 809SOAP Version 1.2 has a number o ... -
术语-揭开Socket
2013-09-27 11:37 930好文转自:http://www.cnblogs.com/goo ... -
术语-Frontend 与 backend
2013-09-16 10:20 1223Front-end and back-end are term ... -
HTTP状态代码含义与其解决方法
2012-11-29 14:04 1054HTTP状态代码含义与其解决方法 转自:http://bugu ... -
微软知识库kb是什么?
2012-10-23 18:53 0您在搜索微软kb(微软知识库 knowledge base)和 ... -
Oracle 9i 、10G 编程艺术之深入数据库体系结构
2011-10-30 16:13 1043第一章 [1.3.3 多版本] Oracle 能充分利用不 ... -
启动Eclipse3.6 报错 EXCEPTION_ACCESS_VIOLATION (0xc0000005)
2011-10-27 12:04 5134错误摘要 安装 subclipse1.6.5 后,eclips ... -
apache2.2.x 整合jClime Application Server
2011-07-29 17:24 862配置 apache2.2.15 ./configure --e ... -
Maven之-使用自已的Manifest File
2011-07-25 13:37 1164By default, Maven Archiver gene ... -
[一步一步Felix] OSGi 4.2发布了
2011-04-06 00:50 1820近日OSGi联盟发布了O ... -
[一步一步Felix]了解Apache Felix OSGi容器
2011-04-05 23:30 4553Felix是一个OSGi版本4规范的Apache ...
相关推荐
在本文中,我们将深入探讨RabbitMQ的核心概念、工作原理以及如何进行性能测试和调优。 **核心概念** 1. **Broker**: RabbitMQ服务器就是消息队列的Broker,负责接收、存储和转发消息。 2. **Exchange**: 消息的...
2. **性能调优**:通过对队列长度、内存使用等参数进行调整,优化系统性能。 3. **监控与报警**:利用监控工具定期检查RabbitMQ的状态,及时发现并解决问题。 通过以上详细介绍,我们不仅了解了RabbitMQ的基础知识...
- 使用`rabbitmqadmin`等工具进行数据恢复。 **34. RabbitMQ的日志文件存储了哪些信息?** - 包括但不限于启动日志、错误日志、审计日志等。 **35. 如何配置RabbitMQ的访问控制和权限?** - 利用用户账号和权限...
5. **异步处理**:对于耗时的操作,如大批量数据更新,可以采用消息队列(如RabbitMQ或Kafka)进行异步处理,避免阻塞主线程。 6. **数据库复制**:通过主从复制,实现数据备份和负载均衡。在读多写少的场景下,...
在使用过程中,你可能需要对Kafka和EMQ的性能进行调优,以确保在大规模并发场景下的稳定性和效率。这可能涉及到调整队列长度、设置合适的批处理大小、优化网络通信等。 总结来说,`emq_plugin_kafka_ekaf` 插件是...
2. **JVM调优**:Java虚拟机(JVM)是Java应用程序的基础,对其进行调优可以显著提高应用性能。JVM调优主要包括堆内存分配、垃圾回收器选择、类加载机制调整、线程池配置等方面。理解垃圾收集的工作原理,比如新生代...
3. **JVM调优**:调整JVM参数,如堆大小、新生代和老年代的比例,启用G1或CMS垃圾收集器以减少停顿时间。 4. **并发编程**:利用Java并发库,如线程池、Future、CompletableFuture等,有效管理并发任务。 5. **缓存...
12. **监控与调优**:实时监控系统性能指标,如CPU使用率、内存占用、网络带宽等,及时发现问题并进行调优。 综上所述,解决高并发问题需要综合运用多种技术和策略,根据具体业务场景选择合适的方法,不断优化和...
2. **队列服务**:当用户请求到达时,将购买请求放入消息队列(如RabbitMQ或Kafka),后台服务按照顺序处理队列中的请求,这样可以避免瞬间高并发对系统造成冲击。 3. **缓存**:使用缓存(如Redis或Memcached)...
例如,使用Nginx进行负载均衡,通过JVM参数调整进行性能优化,以及利用缓存技术如Redis和Memcached提升响应速度。 数据库是任何应用的基础,Java架构师需要精通多种数据库技术,包括关系型数据库MySQL、Oracle,...
- **LoadRunner**:商业性能测试工具,支持多种协议,能模拟大量并发用户,进行系统性能验证。 - **其他工具**:如Ngrinder、Locust、Wrk、Artillery等,各有特色,适合不同场景和需求。 7. **系统架构**: - **...
它能够将大量的访问请求均匀地分散到多个服务器上进行处理,从而避免单一服务器过载。 - **轮询算法**:最简单的负载均衡算法之一,按照顺序依次将请求分发到后端服务器。 - **最少连接数算法**:根据当前服务器已...
2. **网络通信**:游戏服务端需要与客户端进行实时交互,因此对Socket编程有深入理解至关重要。TCP/IP协议用于建立可靠的连接,而UDP协议则常用于实现更低延迟的数据传输。NIO(非阻塞I/O)和Netty框架也是提高网络...
分布式系统是一种由多台计算机和硬件设备通过网络相互连接,协同工作以实现共同目标的计算模型。在“网络与通信”这一章节中,我们将深入探讨分布式系统中的关键概念和技术,这些内容对于理解和构建大规模、高可用的...
NIO(Non-blocking I/O)适用于大量连接、低延迟的场景,它允许程序在等待I/O操作完成时执行其他任务。Java9引入了模块系统、JShell(REPL)和HTTP/2客户端等改进。 HashMap内部使用数组+链表/红黑树的数据结构实现...
3. **JVM调优**:对于处理大量数据的系统,Java虚拟机(JVM)的优化至关重要。这包括堆内存设置(新生代、老年代大小),GC策略调整(G1、CMS、Parallel GC等),以及监控和诊断工具(VisualVM、JConsole等)的使用...
它集成了大量常用的第三方库配置,如JDBC、MongoDB、JPA、RabbitMQ、Quartz等,通过“约定优于配置”的理念,让开发者可以快速地创建一个独立的、生产级别的基于Spring的应用。 本文将围绕"spring-boot-demo"这一...