服务端 高性能 (三) network
来源:互联网 发布:rsa512算法 编辑:程序博客网 时间:2024/06/05 07:41
前两篇主要从cpu和memory两个方面讨论了服务端高性能优化,现在谈谈rpc这块,
服务端现在主要有两种调用:
- 远程redis调用
- 远程thrift调用
远程redis调用现在是部署了读写分离来提高读写效率;另外,说一说之前遇到的一个问题,
我们的业务每个线程都要从redis读取几K的数据,发现这块耗时很不稳定,有时候这个时间
会出现41ms,83ms这么长的时间,用tcpdump观察,发现在ack的时候有40ms的延迟,从
而导致这种情况的发生;这种情况是tcpdelayack引发的,主要两种原因:
- nagle算法
- 窗口拥塞
redis server端和client端都已经设置了tcpnodelay=true,禁用了nagle算法,那就是窗口
拥塞导致这种情况了,所以这块要进行限流,现在解决方案:
对大数据块进行分批次获取,每次获取部分数据(多测试尽量避免tcpdelayack);
远程thrift调用注意两点吧:
- 设置超时
- 加好缓存
超时现在是1s,太长会引发性能问题,如果远程thrift接口性能更好的话可以更适当的缩小
超时时间;
现在远程thrift接口是一个cpu密集型服务,所以这块其实也比较耗时的,所以上层调用端
可以给这里加缓存,我这里主要加了两层缓存:进程内缓存和远程redis缓存,当然如果追求
更高性能,为了防止重启服务器进程内热点缓存丢失的话可以在重启之前把缓存load到文件
然后重启的时候再进行warmup。
另外,redis client对象和调用thrift socket这块要调用连接池,减少建立连接的开销,同时
也能控制对象的成本。
0 0
- 服务端 高性能 (三) network
- 服务端 高性能 (一) cpu
- 服务端 高性能 (二) cpu & memory
- 创建高性能服务端
- 高性能服务端漫谈
- 高性能服务端漫谈
- 高性能CSS(三)
- 安全高性能网站搭建(三)
- 高性能MySQL.读书笔记(三)复制
- (三)创建高性能的索引
- 高性能mysql读书笔记(三)
- 高性能服务端编程知识点梳理图解
- 高性能服务端编程知识点梳理图解
- 高性能服务端编程知识点梳理图解
- 达达-高性能服务端优化之路
- 谈如何构建高性能服务端程序
- 达达-高性能服务端优化之路
- 高可用高性能系统(三)故障管理
- Android Performance(1) StrictMode
- MVC Html.AntiForgeryToken() 防止CSRF攻击
- asterisk1.8 账号信息mysql存储(动态)
- 如何在 performSelector: withObject:afterDelay 的Object里传入多个参数
- 如何学习开源项目及Ceph的浅析
- 服务端 高性能 (三) network
- 正则表达式
- iOS开发中地图(MapKit)的使用
- 用ConfigurationManager读取和修改配置文件
- 百鸡问题
- string转char*
- 抽象类与接口的深入区别
- linux下i2c通用接口读取和处理mag3110地磁传感器程序
- Bug 10121589 ORA-600 [kjbmprlst:shadow]