Ubuntu下提升高并发socket最大连接数限制

前言

linux系统默认ulimit为1024个访问 用户最多可开启的程序数目。一般一个端口(即一个进程)的最高连接为2的16次方65536。
查看全局文件句柄数限制(系统支持的最大值)

cat /proc/sys/fs/file-max

在这里插入图片描述
查看每个进程文件句柄数限制

ulimit -n

在这里插入图片描述

1. limits.conf修改

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

vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 65535
* hard nproc 65535
* soft core 102400
* hard core 102400
* soft stack 10204
* hard stack 32768

在这里插入图片描述

2. /etc/pam.d修改(Centos主机可选)

修改/etc/pam.d/su 、/etc/pam.d/common-session、/etc/pam.d/login,在文件中添加如下行:

sudo vi /etc/pam.d/su
#将 pam_limits.so 这一行注释去掉 ,保存修改

在这里插入图片描述

sudo vi /etc/pam.d/common-session
#加上以下一行并保存
session required pam_limits.so

在这里插入图片描述

3. /etc/sysctl.conf修改

在文件中(清除文件原始内容(或者在原有的基础上添加,我是这么干的))添加如下行(修改网络内核对TCP连接的有关限制)。

vi /etc/sysctl.conf
vm.overcommit_memory=1
net.core.rmem_default = 33554432
net.core.rmem_max = 33554432
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_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

配置完成后执行如下命令生效

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

4. ulimit设置

执行如下命令(linux系统优化完网络必须调高系统允许打开的文件数才能支持大的并发,默认1024是远远不够的)

echo "ulimit -HSn 65535" >> /etc/rc.local
echo "ulimit -HSn 65535" >>/root/.bash_profile
echo "ulimit -SHn 65535" >> /etc/profile
ulimit -SHn 65535

5.重启系统即可生效

通过修改,tcp可以达到65535个连接完全没有问题
通过这个命令 ulimit -n 可以看到值改为65535了,也就是说现在最多支持65536个tcp socket连接了
查看当前有多少个TCP连接到当前服务器命令:

 netstat -antp |grep -i est |wc -l

参考文档

https://www.cnblogs.com/jest549/p/14697557.html

Ubuntu 22.04上调整最大连接数通常是针对网络相关的服务,比如Apache、Nginx或者MySQL等。这些服务有时需要能够同时处理多个客户端连接。以下是调整不同服务最大连接数的基本步骤: 1. **Apache**: - 打开Apache配置文件 `httpd.conf` 或者位于 `sites-available` 目录下的对应站点配置文件(如 `site-enabled/sites-available/your-site.conf`),找到 `MaxConnectionsPerChild` 行来设置每个子进程的最大连接数,然后重启Apache服务。 ``` sudo nano /etc/apache2/conf-available/httpd.conf # 更改 MaxConnectionsPerChild,并保存退出 sudo systemctl restart apache2 ``` 2. **Nginx**: - 配置位于 `/etc/nginx/nginx.conf` 或者`/etc/nginx/sites-available/your-site.conf`中的 `worker_connections` 设置每个工作进程的最大连接数,重启Nginx生效。 ``` sudo nano /etc/nginx/nginx.conf # 更改 worker_connections,保存退出 sudo nginx -s reload ``` 3. **MySQL** (InnoDB Connections): - MySQL的最大连接数由`max_connections`参数控制,在`my.cnf`文件里编辑,然后重启MySQL服务。 ``` sudo nano /etc/mysql/my.cnf # 更改 max_connections, 保存并关闭 sudo service mysql restart ``` 4. 对于系统级别的连接数限制,如TCP Wrappers(通过`listen(2)`系统调用),你可以调整`/etc/security/limits.conf`文件中的全局或特定用户限制。 请记得在更改配置后测试服务是否正常运行,并根据实际需求适当调整数值,以免造成性能瓶颈或者安全风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驯龙高手_追风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值