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

news2025/7/15 17:26:11

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的配置都已经生效,味道部署的程序不生效?

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

ps -ef|grep -i java

 然后使用cat 命令查看程序的限制,执行命令:

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

 查了大量资料后才知道:

在Centos7 & ubuntu 系统中,使用Systemd替代了之前的SysV。/etc/security/limits.conf文件的配置作用域缩小了。

/etc/security/limits.conf的配置,只适用于通过PAM认证登录用户的资源限制,它对systemd的service的资源限制不生效。

因此登录用户的限制,通过/etc/security/limits.conf与/etc/security/limits.d下的文件设置即可。

对于systemd service的资源设置,则需修改全局配置:及下面两个配置文件

/etc/systemd/system.conf

/etc/systemd/user.conf

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

DefaultLimitNOFILE=65535
DefaultLimitNPROC=65535

同时也会加载两个对应目录中的所有.conf文件/etc/systemd/system.conf.d/.conf和/etc/systemd/user.conf.d/.conf。

system.conf是系统实例使用的,user.conf是用户实例使用的。

修改之后重新启动系统,查看进程的的Max open files:

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

 终于搞明白了Linux服务器限制的原理:

3.顺利进行了压力测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/94591.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蓝桥杯嵌入式综合实验真题-联网电压测量系统设计与实现

目录 实验要求: 实验思路: 核心代码: (1)变量声明 (2)函数声明 (3)main主函数 (4)按键(长按/短按) (5&…

K8s——Service、代理模式演示(二)

Service 演示 SVC 创建svc-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata:name: myapp-deploynamespace: default spec:replicas: 3selector:matchLabels:app: myapprelease: stabeltemplate:metadata:labels:app: myapprelease: stabelenv: testspec: c…

学习UI设计有哪些figma插件

自2016年推出以来,Figma已发展成为市场领先者UI设计工具之一。 因为它不仅简单易用,功能优秀,而且基于云服务,可以实时编辑,节省大量手动下载或复制文件的时间。不仅如此,Figma还提供合作功能,…

一文读懂PFMEA(过程失效模式及后果分析)

PFMEA是过程失效模式及后果分析(Process Failure Mode andEffects Analysis)的英文简称,是由负责制造/装配的工程师/小组主要采用的一种分析技术,用以最大限度地保证各种潜在的失效模式及其相关的起因/机理已得到充分的考虑和论述。 名词解释&#xff1a…

springboot介绍

笔记来源于 动力节点springboot Javaconfig xml方式 在创建模块时&#xff0c;idea2022新版选择internal即可&#xff1a; pom.xml文件 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xs…

圆顶光源特点及应用——塑料包装袋、PCB板检测

照明系统是机器视觉系统较为关键的部分之一&#xff0c;机器视觉光源直接影响到图像的质量&#xff0c;进而影响到系统的性能。其重要性无论如何强调都是不过分的。好的打光设计能够使我们得到一幅好的图象&#xff0c;从而改善整个整个系统的分辨率&#xff0c;简化软件的运算…

Java JNA 调用DLL(动态连接库) 回调函数

首先准备好动态链接库dll 参考连接 visual studio 2017 创建dll文件并使用https://blog.csdn.net/miss_na/article/details/113524280 Visual Studio 2017 动态链接库(.dll)生成与使用的简明教程https://blog.csdn.net/Hide_on_Stream/article/details/109172054 jni之jni与…

【记录】U盘安装Ubuntu20.04系统

之前电脑安装的Centos7系统&#xff0c;但是在启动过程中遇到了文件异常&#xff0c;就开不了机了&#xff0c;另外貌似Centos7已经停止维护了&#xff0c;想了下&#xff0c;果断不要数据了&#xff0c;直接重装系统吧&#xff0c;这次选用的是Ubuntu 20.04【ps: 没有选择最新…

「含元量」激增,这届世界杯的看点不止足球

文|智能相对论 作者|青月 半决赛结束&#xff0c;卡塔尔世界杯已经正式进入倒计时阶段。 这届世界杯诞生了不少精彩瞬间&#xff0c;在小组赛中&#xff0c;日本、韩国、沙特接连打败西班牙、葡萄牙、阿根廷等传统强队&#xff0c;摩洛哥也代表非洲球队首次挺进四强&#xf…

v8垃圾回收

文章目录内存的生命周期v8垃圾回收算法新生代Scavenge图例老生代Mark-SweepMark-Compact图例v8垃圾回收的弊端v8垃圾回收优化内存的生命周期 内存的生命周期可以分为三个阶段&#xff1a; 内存分配&#xff1a;按需分配内存内存食用&#xff1a;读写已经分配的内存内存释放&a…

Linux 管理联网 配置网络的四种方法 配置临时连接( ip 命令)

配置网络 # 网络接口是指网络中的计算机或网络设备与其他设备实现通讯的进出口。这里,主要是 指计算机的网络接口即 网卡设备 # 网络接口 -- 网卡 的命名 &#xff1a; 从RHEL7开始引入了一种新的“一致网络设备命名”的方式为网络接口命名,该…

【Java笔记】 深入理解序列化和反序列化

深入理解序列化和反序列化 文章目录深入理解序列化和反序列化1.是什么2.为什么3.怎么做3.1 实现Serializable接口3.2 实现Externalizable接口3.3 注意知识点3.4 serialVersionUID的作用4 扩展1.是什么 序列化&#xff1a;就是讲对象转化成字节序列的过程。 反序列化&#xff…

C++开发,这些GUI库一定不要错过

程序员宝藏库&#xff1a;https://gitee.com/sharetech_lee/CS-Books-Store 如果问Python这类集成度非常高的编程语言GUI开发用什么库&#xff0c;可以列举出很多不错的第三方库。 但是&#xff0c;如果这个问题放在C这种基础的编程语言上&#xff0c;很多同学估计一时间都无从…

用Gurobi+python求解设施选址问题(facility location)

参考&#xff1a;Gurobi 官方资源 设施选址&#xff08;Facility Location&#xff09; 1.背景介绍 设施选址问题在许多工业领域如物流&#xff0c;通信等都有应用&#xff0c;在本案例中展示如何解决设施选址问题&#xff0c;决策出仓库的数量和地点&#xff0c;为一些超市…

Crash Consistency on File Systems: 文件系统一致性保证 (1) Journaling File System

文件系统是操作系统中管理用户数据的重要模块。其中一项重要的任务就是确保用户数据的在系统突然崩溃之后&#xff0c;系统能够恢复出完整、一致的用户数据。本文将会分析两种流行的文件系统&#xff0c;Journaling File System 和 Log-structured File System是如何确保数据的…

dataFactory连接mysql详细配置教程

场景&#xff1a;最近项目提出机构用户中其中一个部门下用户人数有20万&#xff0c;加载的时候十分缓慢&#xff0c;本地想重现的一下&#xff0c;这就需要在本地表中生成>20万的数据&#xff0c;搜索了网上的教程写的都是很粗略。 目录 dataFactory连接mysql配置 安装包下…

第二证券|“20cm”涨停!盘中暴涨110%,又有港股暴力拉升

A股商场今日上午窄幅动摇&#xff0c;电子等板块领涨。北向资金半响净买入额到达26.10亿元。 港股商场今日上午动摇也较为温和。不过&#xff0c;仍有个股剧烈动摇。比如浦江世界上午暴升&#xff0c;盘中涨幅一度超过110%。 A股窄幅动摇 电子板块领涨 今日上午A股商场全体体…

STL六大组件之算法

文章目录56、STL六大组件之遍历算法57、STL六大组件之查找算法158、STL六大组件之查找算法259、STL六大组件之统计算法60、STL六大组件之合并算法61、随机数&#xff08;rand&#xff09;和随机数种子&#xff08;srand&#xff09;的理解62、STL六大组件之随机算法(洗牌算法)6…

javaweb笔记

javaweb数据库jdbcmaven数据库 1.chart定长 2.分组查询:where>聚合函数>having 3.分页查询: select 字段列表 from limit 起始索引&#xff0c; 查询条目数 计算公式: 起始索引&#xff08;当前页码-1&#xff09;每页显示的条数 不同数据库分页查询不一样 4.like模糊查…

8种常见python运行错误,看看你中招了没?

人生苦短 我用python 对于刚入门Python的新手同学来说&#xff0c; 在运行代码时总免不了报错。 如何通过报错查找错误代码&#xff1f; 今天给大家总结了一些常见的报错类型&#xff0c; 每种报错都会有标有错误细节和错误行。 大家以后看到了&#xff0c;就更容易找出自…