由于我是做大数据后台开发,早有耳闻树莓派成百上千的集群,用在各种场合测试中,树莓派整合度高,可玩性强,性价比高,arm架构低功耗等特性,吸引了我,就在近期入手了一台新版高配的4B板子,装上外壳后很酷!
![a887298a6225aa49a76217c1620cc5d3.png](https://i-blog.csdnimg.cn/blog_migrate/ec157a11e10531aefadbb1a4b5d6a486.jpeg)
![c5658cec5420a9da9b1d635dbc8b5f55.png](https://i-blog.csdnimg.cn/blog_migrate/887e8261d43f9c6a8d174c4be36c1699.jpeg)
我们公司是专业开发gps大数据后台,目前正在向通用物联网平台迈进,大数据的处理能力至关重要,优化与改进也在近期进行,在我们的gps模拟器开发好后,首先想到的宿主机便是树莓派了,两者结合起来,充当我们后台的压测工具,能产生什么效果不得而知!
我们的gps模拟器是采用golang开发,可以跨平台运行,它可以创建指定数量的gps虚拟机,每个虚拟机都是单独的维护与服务器的链路,定时上传指定协议处理器的数据,虚拟机内置gps虚拟模块,随机产生gps数据,虚拟机定时采集模块的数据,每次上传前会将数据传入协议处理器,由协议处理器打包特定格式,虚拟机接收到数据也会路由到指定的协议处理器分析,该架构支持多协议处理器。
首测并不理想,是因为没有对linux相关技术参数调整,在经过一番搜索后,总结如下:
修改临时端口的范围
# echo 1024 65535 > /proc/sys/net/ipv4/ip_local_port_range
注意以上命令是在root用户时执行的!!
或者 sudo sysctl -w net.ipv4.ip_local_port_range="1024 65535"
设置用户最大允许打开文件数量
ulimit -n 64511
调低端口释放后的等待时间,默认为60s,修改为15~30s:
sysctl -w net.ipv4.tcp_fin_timeout=10
修改tcp/ip协议配置,释放TIME_WAIT端口给新连接使用
sysctl -w net.ipv4.tcp_timestamps=1
快速回收socket资源,默认为0,修改为1
sysctl -w net.ipv4.tcp_tw_recycle=1
允许端口重用:
sysctl -w net.ipv4.tcp_tw_reuse = 1
参数设置好后,我们在树莓派上运行gps模拟器,并成功的模拟了60000台gps虚拟机,测试时间长达两个半小时,期间60000个tcp并发链接无异常,数据收发无异常!树莓派内存占用36%左右,cpu在50%至80%之间浮动,后台内存一直往上涨,22g左右了,主要是10秒频率产生的内存数据增长率,要远远大于磁盘写入率,等数据全部写入数据库,后台的内存也就释放了!
![95d40faaae2df860e541b4dcdf7c314e.png](https://i-blog.csdnimg.cn/blog_migrate/640e4dbff0a6afe746ca3fb76dbca366.jpeg)
![d12055af39bde138156810ce6c882bd8.png](https://i-blog.csdnimg.cn/blog_migrate/e031ab3930f82aedd873f3cd5648ff0f.jpeg)
以上分别是树莓派资源占用截图,后台资源占用截图。
本次测试,机器和软件都很给力,坚定了未来我们用树莓派做集群的决心!