新年快乐,请教一个问题,Go使用RabbitMQ的问题?

使用Go开发了一个接口,大致的流程就是:Push接口负责把消息写入MQ->系统进行消费,目前我使用ab测试,10000条数据,内存就会爆炸:

ab命令:

ab -n 10000 -c 10 -T application/x-www-form-urlencoded  -p ab_test.json http://127.0.0.1:8000/api/dot/login/push

ab_test.json内容:

{

"user_id": 5,

"game_id": 1,

"stop_time": 100,

"is_new_user": 1,

"is_new_devices": 1,

"timezone_id": "时区ID-2号",

"region_id": "地区ID-1号",

"area_server_id": "区服ID—2号",

"channel_id": "渠道ID—2号",

"channel_name": "2号渠道名称"

}

问题来了:

这是我的写入消息的接口:

每一次请求都要 InitRabbit,InitRabbit实现:

也就是导致了每一次请求,都新建了channel,10000个,就会有10000个channel,以后还会日积月累的变多,慢慢导致内存爆炸,

求问各位大佬,你们线上是怎么解决的这个问题呀?


回答:

不要:

for _ in range(100000):

connection=Connection()

connection.push(data)

而要:

connection=Connection()

for _ in range(100000):

connection.push(data)


如果你要并发,就用线程池、协程池,控制并发数量

每个协程或者线程持有独立的连接,用到死

以上是 新年快乐,请教一个问题,Go使用RabbitMQ的问题? 的全部内容, 来源链接: utcz.com/p/944925.html

回到顶部