加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Nginx多进程高并发、低时延、高可靠机制在缓存(redis、memcache)twemproxy代理中的应用

发布时间:2019-03-17 18:47:50 所属栏目:MySql教程 来源:y123456yz
导读:副标题#e# 1. 开发背景 现有开源缓存代理中间件有twemproxy、codis等,其中twemproxy为单进程单线程模型,只支持memcache单机版和redis单机版,都不支持集群版功能。 由于twemproxy无法利用多核特性,因此性能低下,短连接QPS大约为3W,长连接QPS大约为13W

替换线上集群两个代理中的一个后(影响50%流量),长连接,qps=5000~6000,客户端埋点监控时延分布如下:

替换两个proxy中的一个后,使用tcprstat在代理集群上面查看两个代理的时延分布如下:

原生twemproxy节点机器上的时延分布:

Nginx多进程高并发、低时延、高可靠机制在缓存(redis、memcache)twemproxy代理中的应用 

另一个改造后的twemproxy节点机器上的时延分布:

总结:替换线上两个proxy中的一个后,客户端时间降低了一倍,如果线上集群两个代理都替换为改造后的twemproxy,客户端监控时延预计会再降低一倍,总体时延降低3倍左右。

此外,从监控可以看出,改造后的twemproxy时延更低,更加稳定,无任何波动。

6.2 参考nginx多进程改造后的twemproxy线下压测结果(开启reuseport功能)

监听同一个端口,数据长度100字节,压测结果如下:

linux内核版本:linux-3.10

物理机机型: M10(48 cpu)

多进程监听同一个端口,数据长度150字节,压测结果如下:

linux内核版本:linux-3.10

物理机机型: TS60 (24 cpu)

7 总结

7.1 多进程、多线程机制选择

选择参照nginx多进程机制,而不选择多线程实现原因主要有:

1) 多进程机制无锁操作,实现更容易

2) 多进程的代理,整个worker进程无任何锁操作,性能更好

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读