dreamno

导航

 

在本机压测 TCP 服务,需要在本机做一个简单的压测,想起 Linux 是可以配置最大文件限制数,所以找了一下在 Mac 上的配置:

  1. 最大连接数限制
    最大连接数限制就是系统所能打开的最大文件数(文件描述符)的限制,分全局和进程两种:

1.1. 全局
» sysctl kern.maxfiles
kern.maxfiles: 49152

系统默认的最大连接数限制是 49152

sudo sysctl -w kern.maxfiles=1048600

设置系统最大连接数从 49152 到 1048600

1.2. 进程
» sysctl kern.maxfilesperproc
kern.maxfilesperproc: 24576

单个进程默认最大连接数限制是 24576

sudo sysctl -w kern.maxfilesperproc=1048576

设置进程连接数限制 24576 到 1048576,进程的最大连接数要小于等于全局连接数

  1. ulimit 命令
    » ulimit -n
    4864

显示当前shell能打开的最大文件数,默认值:4864,该值总是小于 kern.maxfilesperproc 的值,因为一个 shell 就是一个进程。

ulimit -n 1048576

设置当前shell能打开的最大文件数为 1048576,该值不能大于 kern.maxfilesperproc ,否则会提示设置失败。

  1. 动态端口范围
    3.1. Linux
    root@test:~# sysctl -a|grep ip_local_port_range
    net.ipv4.ip_local_port_range = 32768 60999

表示 Linux 动态端口号默认范围是32768-60999,也就是说,作为客户端连接同一个IP和同一个端口号,最多只能建立 28231 多个连接

Linux 修改动态端口范围的方法:

echo "net.ipv4.ip_local_port_range = 1024 65535" >> /etc/sysctl.conf
sysctl -p

修改 Linux 动态端口号默认范围是 1024-65535

3.2. Mac OS:
» sysctl net.inet.ip.portrange

低范围

net.inet.ip.portrange.lowfirst: 1023
net.inet.ip.portrange.lowlast: 600

预设范围(默认使用该范围)

net.inet.ip.portrange.first: 49152
net.inet.ip.portrange.last: 65535

及高范围

net.inet.ip.portrange.hifirst: 49152
net.inet.ip.portrange.hilast: 65535

Mac默认动态端口号默认范围是 49152-65535,只能建立 16383 个左右的连接。

Mac OS 修改动态端口范围

sysctl -w net.inet.ip.portrange.first=32768

表示修改动态端口的起始地址为 32768, 其他的类似。

  1. 持久化 Mac 的配置(不建议)
    sudo touch /etc/sysctl.conf;

添加如下内容到 /etc/sysctl.conf 文件

kern.maxfiles=1048600
kern.maxfilesperproc=1048576
net.inet.ip.portrange.first=49152
net.inet.ip.portrange.last=65535

添加后重启

至于 ulimit -n 的值,可以写入到 .bashrc 文件中。

posted on 2025-06-10 19:40  dreamno  阅读(66)  评论(0)    收藏  举报