新年快乐,请教一个问题,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