缓存可能是网络应用里用的最多的组件。jvm内缓存可以存储一些单机的统计数据,redis等存储一些全局性的统计和中间态数据。
网络应用中会大量使用redis、kv、高吞吐的mq,用来快速响应用户请求。总之,尽量保持通讯层的清爽,你会省去很多忧虑。
单机支持100万连接的Linux配置
单机支持100万连接是可行的,但带宽问题会成为显著的瓶颈。启用压缩的二进制协议会节省部分带宽,但开发难度增加。
和《LWP进程资源耗尽,Resource temporarily unavailable》中提到的ES配置一样,优化都有类似的思路。这份配置,可以节省你几天的时间,请收下!
操作系统优化
更改进程最大文件句柄数
- ulimit -n 1048576
修改单个进程可分配的最大文件数
- echo 2097152 > /proc/sys/fs/nr_open
修改/etc/security/limits.conf文件
- * soft nofile 1048576* hard nofile 1048576* soft nproc unlimitedroot soft nproc unlimited
记得清理掉/etc/security/limits.d/*下的配置
网络优化
打开/etc/sysctl.conf,添加配置
然后执行,使用sysctl生效
- #单个进程可分配的最大文件数
- fs.nr_open=2097152
- #系统最大文件句柄数
- fs.file-max = 1048576
- #backlog 设置
- net.core.somaxconn=32768
- net.ipv4.tcp_max_syn_backlog=16384
- net.core.netdev_max_backlog=16384
- #可用知名端口范围配置
- net.ipv4.ip_local_port_range='1000 65535'
- #TCP Socket 读写 Buffer 设置
- net.core.rmem_default=262144
- net.core.wmem_default=262144
- net.core.rmem_max=16777216
- net.core.wmem_max=16777216
- net.core.optmem_max=16777216
- net.ipv4.tcp_rmem='1024 4096 16777216'
- net.ipv4.tcp_wmem='1024 4096 16777216'
- #TCP 连接追踪设置
- net.nf_conntrack_max=1000000
- net.netfilter.nf_conntrack_max=1000000
- net.netfilter.nf_conntrack_tcp_timeout_time_wait=30
- #TIME-WAIT Socket 最大数量、回收与重用设置
- net.ipv4.tcp_max_tw_buckets=1048576
- # FIN-WAIT-2 Socket 超时设置
- net.ipv4.tcp_fin_timeout = 15
总结
netty的开发工作并不集中在netty本身,更多体现在保证服务的高可靠性和稳定性上。同时有大量的工作集中在监控和调试,减少bug修复的成本。
深入了解netty是在系统遇到疑难问题时能够深入挖掘进行排查,或者对苛刻的性能进行提升。但对于广大应用开发者来说,netty的上手成本小,死挖底层并不会产生太多收益。
它只是个工具,你还能让它怎样啊。 【编辑推荐】 - 你没玩过的全新版本Windows 10这些操作你知多少?
- 在Fedora中安装替代版本的RPM包
- Windows 10系统各版本功能比较说明
- 在Linux中如何从命令行查找VirtualBox版本
- 第一次!Windows 10开始警告旧版本过期
【责任编辑:武晓燕 TEL:(010)68476606】
点赞 0
(编辑:ASP站长网)
|