在RabbitMQ中,pool 是以worker_pool 的形式存在的, 其主要用途之一是对Mnesia transaction 的操作. 而在RabbitMQ 中, pool 中的worker 数量是固定不变的, 是和虚拟机的schedulers 相关.这次会首先分别分析设计worker_pool 功能的三个module, 然后分析worker_pool 和 worker_pool_worker module 之间的调度关系. worker_pool_sup module worker_po…
上一篇已经分析了rpool 的三个module , 以及简单的物理关系. 这次主要分析用户进程和 worker_pool 进程还有worker_pool_worker 进程之间的调用关系. 在开始之前, 必须先明确一点, 就是一个worker_pool_worker 进程只有在处理完一个用户进程的任务之后才能开始处理另一用户进程的任务. worker_pool 状态管理 在上一篇已经说明, worker_pool 管理了rpool 工作进程的ready idle busy 状态,从worker_…
在上一篇关于Emysql pool (http://www.cnblogs.com/--00/p/4281938.html)的分析的最后提到 现在的emysql_conn_mgr gen_server 进程属于单点,也就是所有的pool 的管理调度都是由一个进程来完成. 如果在同一个Erlang node 中管理为数众多的pool,就会存在瓶颈. 对于热点进程而言,提高其process priority 是一个optimize 的方向,但是并不能彻底解决因单点带来的问题. 因此, 应该尝试将单个…
从这篇开始,这一系列主要分析在开源社区中,Erlang 相关pool 的管理和使用. 在开源社区,Emysql 是Erlang 较为受欢迎的一个MySQL 驱动. Emysql 对pool 的管理和使用是非常典型的,pool 的管理角色中,主要有available(记录当前pool 中可供使用的成员),locked(记录当前pool 中正在被使用的成员),waiting(记录当前正在处理等待该pool 的用户).用户进程在使用pool 过程中, pool 中的成员在这三个角色中来回迁移. poo…
文章来源: Ubuntu16.04下,erlang安装和rabbitmq安装步骤 准备工作,先下载erlang和rabbitmq的安装包,注意他们的版本,版本不对可能会导致rabbitmq无法启动,这里我使用的是最新的erlang(22.1)和rabbitmq(3.8.1),下载地址: erlang下载地址:http://erlang.org/download/otp_src_22.1.tar.gz(点击这里进入下载页面) rabbitmq下载地址:https://github.com/rabb…
kombu比pika感觉考虑得全面多了,不知道为什么用的人好像少? 生产端是 python-socket.io 的client   接受socketio 消息后, 发到rabbitmq 按时序进行处理. 进行压力测试时, 如果发送到socketio时不加延时, 一次把消息全都发了, 用pika总是报错, channel直接close了. 用kombu一开始也是这样,  使用了producer pool, 好了 https://kombu.readthedocs.io/en/stable/user…
出自: http://blog.sina.com.cn/s/blog_96b8a154010168ti.html…
1. 下载erlang源代码及RabbitMQ rpm安装包      $ wget http://www.erlang.org/download/otp_src_R16B02.tar.gz $ wget http://www.rabbitmq.com/releases ... -3.2.0-1.noarch.rpm 2. 编译安装erlang 解压otp_src_R16B02.tar.gz:     $ tar -zxvf  otp_src_R16B02.tar.gz 利用yum安装erlan…
最终的安装目录为/opt/erlang 和 /opt/rabbitmq wget http://erlang.org/download/otp_src_21.0.tar.gztar zxvf otp_src_21.0.tar.gzcd otp_src_21.0./configure --prefix=/opt/erlang --enable-hipe --enable-threads --enable-smp-support --enable-kernel-poll --without-java…
rabbitmq 官方安装文档可参考:http://www.rabbitmq.com/install-rpm.html  ,由于rabbitmq 使用Erlang 开发的,运行环境需要用到Erlang,本文主要记录采用zero-dependency Erlang 方式搭建rabbitmq 环境. 1.安装Erlang基础依赖: yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel 2.下载编译源码h…