使用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,以后还会日积月累的变多,慢慢导致内存爆炸,
求问各位大佬,你们线上是怎么解决的这个问题呀?
不要:
而要:
如果你要并发,就用线程池、协程池,控制并发数量