物联网架构实例—解决Linux(Ubuntu)服务器最大TCP连接数限制

这篇具有很好参考价值的文章主要介绍了物联网架构实例—解决Linux(Ubuntu)服务器最大TCP连接数限制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.前言:

在对物联网网关进行压测的时候,发现在腾讯云部署网关程序,设备接入数量只能达到4000多个长连接,之后就再也无法接入终端了。

之前在阿里云部署的时候明明可以到达2万左右,而且腾讯云的这个服务器比阿里云的硬件配置还要高上不少,不至于那么差,随后查阅大量资料终于完美解决。

2.解决步骤:

2.1.修改/etc/security/limits.conf文件

执行脚本:

vim /etc/security/limits.conf

在文件中添加如下行(*指代系统用户名),修改Linux系统对用户的关于打开文件数的软限制和硬限制:

*soft nofile 65535
*hard nofile 65535

2.2.修改/etc/pam.d/login文件

执行脚本:

vim /etc/pam.d/login

在文件中添加如下行:

session required /lib/security/pam_limits.so

如果是64bit系统的话,应该为

session required /lib64/security/pam_limits.so

2.3.修改/etc/sysctl.conf文件

执行脚本

vim /etc/sysctl.conf

在文件中添加如下行(修改网络内核对TCP连接的有关限制):

net.ipv4.tcp_mem = 786432 2097152 3145728
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.ip_local_port_range = 1024 65535
net.core.rmem_max=16777216
net.core.wmem_max=16777216
net.ipv4.tcp_rmem=4096 87380 16777216
net.ipv4.tcp_wmem=4096 65536 16777216
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_max_tw_buckets=55000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_window_scaling = 0
net.ipv4.tcp_sack = 0
net.core.netdev_max_backlog = 30000
net.ipv4.tcp_no_metrics_save=1
net.core.somaxconn = 262144
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
fs.file-max=655350

2.4.执行行如下命令(使上述设置生效)

/sbin/sysctl -p /etc/sysctl.conf
/sbin/sysctl -w net.ipv4.route.flush=1

2.5.执行如下命令(linux系统优化完网络必须调高系统允许打开的文件数才能支持大的并发)

echo ulimit -HSn 65536 >> /etc/rc.local
echo ulimit -HSn 65536 >>/root/.bash_profile
ulimit -HSn 65536

2.6.重启电脑

执行命令:

reboot

原本以为上述操作执行万后,连接数就可以上去了,最后发现竟然没有效果,是因为有一处程序的限制没有打开,下面就着重说一下这里,这个也是让我纠结了2天的才解决的。

2.7.修改程序限制

打开我的程序日志,发现终端连接数只要一到4000多以上就会频发出现一个错误,java.io.IOException:Too many open files,所以明显程序的限制没有生效。

物联网架构实例—解决Linux(Ubuntu)服务器最大TCP连接数限制

 既然找到了问题,就朝着这个方向查询资料,为啥Linux的配置都已经生效,味道部署的程序不生效?

找到程序对应的PID,因为我这边是Java程序,所以使用命令:

ps -ef|grep -i java

物联网架构实例—解决Linux(Ubuntu)服务器最大TCP连接数限制

 找到自己受限制的程序PID然后使用cat 命令查看程序的限制,执行命令:

cat /proc/1484/limits #1484是我那个网关程序的PID

物联网架构实例—解决Linux(Ubuntu)服务器最大TCP连接数限制

 查了大量资料后才知道:在Centos7 与 ubuntu 系统中,/etc/security/limits.conf文件的配置作用域缩小了。/etc/security/limits.conf的配置,只适用于通过PAM认证登录用户的资源限制,它对systemd的service的资源限制不生效。

如果是登录用户,通过/etc/security/limits.conf与/etc/security/limits.d下的文件设置即可。

但是对于systemd service的资源设置(我们部署的运行程序则属于此项),则需修改全局配置:及下面两个配置文件:

配置文件1:

vim /etc/systemd/system.conf

物联网架构实例—解决Linux(Ubuntu)服务器最大TCP连接数限制

配置文件2:

vim /etc/systemd/user.conf

物联网架构实例—解决Linux(Ubuntu)服务器最大TCP连接数限制

 在这两个配置内增加下面两行:

DefaultLimitNOFILE=65535
DefaultLimitNPROC=65535

其中:system.conf是系统实例使用的;user.conf是用户实例使用的。

修改之后重启系统,可以使用脚本(reboot),但是有的Shell工具貌似对此脚本有限制,我这边使用的是XShell进行操作的,是可以正常执行reboot脚本进行服务器的重启,然后执行下面的命令查看修改后的限制是否正常。

cat /proc/1513/limits   #1513为程序的PID

物联网架构实例—解决Linux(Ubuntu)服务器最大TCP连接数限制

最终搞明白了Linux服务器对连接数的限制原理,对于Linux服务器而已所有的TCP链路都是打开文件句柄 ,所以提升TCP连接数就是对开放对文件句柄的限制。

物联网架构实例—解决Linux(Ubuntu)服务器最大TCP连接数限制

3.顺利进行了压力测试

通过上述操作,目前我使用单台4核8G服务器,连接数量接入到25000个,单机并发处理能力(含存储到数据库)在5500个包/秒。

物联网架构实例—解决Linux(Ubuntu)服务器最大TCP连接数限制文章来源地址https://www.toymoban.com/news/detail-434800.html

到了这里,关于物联网架构实例—解决Linux(Ubuntu)服务器最大TCP连接数限制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 物联网架构实例—Ubuntu 安装RabbitMQ

    rabbitMq需要erlang语言的支持,在安装rabbitMq之前需要安装erlang. 这个时候应该可以在服务器本地通过 :http://localhost:15672,使用guest账户登录可视化界面了,但是RabbitMQ 3.3 及后续版本,guest 只能在服务本机登录。所以我们还需要创建可远程登录的账户。 查看用户   添加管理用户

    2023年04月23日
    浏览(30)
  • Linux系列:开发环境搭建:ubuntu图形界面安装samba服务器、SSH使用、mount -t cifs 挂载windows共享目录方法与问题解决

    samba一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。 通常linux开发环境要和windows平台进行文件交互,使用samba进行文件夹共享,这样会给开发带来很大的便利性,samba安装很简单,下面介绍一下在ubunt

    2024年02月21日
    浏览(50)
  • 华为云云耀云服务器L实例评测 | 实例评测使用之硬件参数评测:华为云云耀云服务器下的 Linux 磁盘目录分析神器 ncdu

    华为云云耀云服务器L实例评测 | 实例评测使用之硬件参数评测:华为云云耀云服务器下的 Linux 磁盘目录分析神器 ncdu 介绍华为云云耀云服务器 华为云云耀云服务器 (目前已经全新升级为 华为云云耀云服务器L实例) 华为云云耀云服务器是什么 华为云云耀云服务器和上一代

    2024年02月07日
    浏览(58)
  • 云耀服务器L实例搭配负载均衡部署Linux 可视化宝塔面板

    华为云云耀服务器L实例是一种高性能、高可靠性的云服务器实例,适用于大规模企业级应用、大数据分析等场景。它基于华为最新一代的硬件虚拟化技术,提供了更高的计算、存储和网络性能,同时保障了数据安全和隐私保护。 云耀云服务器L实例官网:https://www.huaweicloud.co

    2024年01月21日
    浏览(42)
  • [linux实战] 华为云耀云服务器L实例 Java、node环境配置

    本文介绍了在华为云耀云服务器L实例上配置Java和Node环境的步骤,包括修改密码、配置安全规则、远程登录、安装JDK、安装Git、安装Maven以及安装Node和Npm。 关键词:华为云耀云服务器L实例,Java环境配置,Node环境配置,安装JDK,安装Git,安装Maven,安装Node,安装Npm

    2024年02月10日
    浏览(40)
  • linux系统(centos、Ubuntu、银河服务器)备份

    Get Kali | Kali Linux   balenaEtcher - Flash OS images to SD cards USB drives  点击下载,等待下载完成 双击安装,等待安装完成 双击 启动  选择镜像 选择U盘    开始烧录 等地制作完成  重启电脑,按f11 ,选择正确的u盘启动 输入命令: lsblk 可以看到下图的服务器存在3个硬盘sda、sdb、s

    2024年02月10日
    浏览(45)
  • Linux环境(Ubuntu)上搭建MQTT服务器(EMQX )

    目录 概述 1 认识EMQX 1.1 EMQX 简介 1.2 EMQX 版本类型 2 Ubuntu搭建EMQX 平台 2.1 下载和安装 2.1.1 下载 2.1.2 安装 2.2 查看运行端口 3 运行Dashboard 管理控制台 3.1 查看Ubuntu上的防火墙 3.2 运行Dashboard 管理控制台 本文主要介绍EMQX 的一些内容,终端介绍如何在Ubuntu上安装EMQX,并可以在第三

    2024年04月08日
    浏览(34)
  • linux服务器ubuntu定时任务cron设置每秒执行

    后端的同学经常会遇到在服务器做一些定时脚本处理,比如定时清理日志,定时请求某个接口做特殊的业务处理,大多数linux版本都会带cron服务,以ubuntu服务器做个示例。 cron 是一个在 Unix-like 操作系统中用于定时执行任务的工具。它是 “Chronos”(希腊语,意为时间)的缩写

    2024年02月02日
    浏览(42)
  • [ubuntu]linux服务器每次重启anaconda环境变量失效

    云服务器每次重启后conda不能用了,应该是系统自动把设置环境变量清除了。如果想继续使用,则可以运行一下 你也修改bashrc文件去修改环境变量,方法为 vi ~/.bashrc 在最后一行加入: 上面是对miniconda3,下面是对anaconda3,注意上面用户名要替换自己真实系统用户名 修改完毕

    2024年02月11日
    浏览(47)
  • 重装系统之linux的ubuntu系统(服务器版)

    1 . 准备工具 1.1 一个8G以上的U盘 、软碟通UltralSO软件 软碟通 下载完后,双击安装,接受协议,勾选需要的附加任务,如下图 1.2 ubuntu的镜像文件ubuntu服务器版 在ubuntu官网下载ubuntu,点击Ubuntu Server 20.04LTS即可下载镜像文件 这里安装的是服务器版,下载完成后是一个ISO镜像文件

    2024年02月07日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包