
优化go使用rabbitmq写入消息的并发策略
使用go开发的接口需要写入消息到rabbitmq,并使用ab工具进行压力测试。但在并发达到10000个请求时,内存会爆炸式增长。该问题源于每次请求都会初始化rabbitmq连接,导致大量信道被创建,最终占用了大量内存。
不正确的并发策略:
for _ in range(100000):
connection=connection()
connection.push(data)正确的并发策略:
立即学习“go语言免费学习笔记(深入)”;
connection=connection()
for _ in range(100000):
connection.push(data)优化后的代码不会为每个请求创建单独的连接,而是复用一个连接。这意味着每个并发任务将使用自己的连接,而不会创建多余的信道。
如果需要更高的并发量
如果并发需求超过了单个连接的能力,可以使用线程池或协程池来控制并发数量。每个线程或协程将拥有自己的独立连接,避免资源过度消耗。
// 创建线程池
pool := NewThreadPool(100)
for _ in range(100000):
pool.Submit(func() {
connection := Connection()
connection.push(data)
})










