好几年前,做个测试场景,在一个main_sup下挂载sup和worker,在sup下动态挂载worker。压测:
动态挂载多少个woker。
测试加压机:1)硬件: 8核16G; 2) 方式:rpc:cast/4,rpc异步接收
erlang VM 启动参数设置:
a). 开了2W个ets表, +ETS_MAX_TABLE
b). +p 最大进程数开了50W
c). +W 加了 error_log 开启
d). +A 开了 epoll 机制
压测: 承载动态添加的worker实例大约近8K个,开启到1w个后,会在lager中的message_queue等待队列 time_out。
分析:rpc为单进程(gen_server)会阻塞,导致发送进程挂起。增加了 +zdbb/size 后,依然压测效果不是很明显。
把rpc的方式换成 Pid !Msg方式,或者在receive的时候,修改增加超时时间.
receive ......
after xxx ->
todo
end.