分享 大家开发的系统,线上产品最高 QPS 是多少?

limpid · 2013年12月21日 · 最后由 limpid 回复于 2013年12月22日 · 5651 次阅读

自己开发的一个线上认证系统,最高的时候,单台服务器高峰可以达到 5000QPS(总共 4 台服务器)。前一段一直不稳定,到用户高峰的时候就出问题,遇到了各式各样的坑,折磨的快崩溃了,弄了半个月,现在才稳定了。

想问问大家的实际产品中,最大的 QPS 是多少?QPS 一高,发现各种各样的瓶颈都出来了

你能把高峰时期遇到的问题还解决办法写一下吗?

20000 QPS 的系统,的确不算小了,楼主分享一下遇到的问题吧

1 尽可能多的 cache 业务请求 2 日志放到一个线程来写(减少锁竞争),日志消息过快时丢弃 3 系统全异步处理消息,用队列控制请求过快 4 通过把绑定中断到不同 cpu,分摊中断压力 5 消息处理分组,减少锁竞争 6 后台业务系统连接,采用自己写的连接池 7 优化 linux 系统上关于网络配置内核参数 8 避免了 linux 上一个 OOM 坑,解决了一个非常诡异的 bug

补充,其他的还有:挂住快速重复请求的客户端,预分配消息内存池等

#3 楼 @limpid 2 日志放到一个线程来写(减少锁竞争),日志消息过快时丢弃 5 消息处理分组,减少锁竞争

这 2 个是怎么做到的?

@kingwkb 2 要写的日志,塞入到一个日志 buffer 队列,达到队列最大长度时,丢弃日志消息。日志线程取消息写日志。 5 根据 id 的模分发到对应组中,这样保证了同样 id 的分到同一个线程,同时做到了消息分组,减少锁竞争

需要 登录 后方可回复, 如果你还没有账号请 注册新账号