今天需要在本机压测一个 Netty 的 TCP 服务,需要在本机做一个简单的压测,想起 Linux 是可以配置最大文件限制数,所以找了一下在 Mac 上的配置:
1. 最大连接数限制
最大连接数限制就是系统所能打开的最大文件数(文件描述符)的限制,分全局和进程两种:
1.1. 全局
1 2 3 4 5 6
| » sysctl kern.maxfiles kern.maxfiles: 49152 #
sudo sysctl -w kern.maxfiles=1048600 #
|
1.2. 进程
1 2 3 4 5 6
| » sysctl kern.maxfilesperproc kern.maxfilesperproc: 24576 #
sudo sysctl -w kern.maxfilesperproc=1048576 #
|
2. ulimit 命令
1 2 3 4 5 6
| » ulimit -n 4864 #
ulimit -n 1048576 #
|
3. 动态端口范围
3.1. Linux
1 2 3
| root@test:~# sysctl -a|grep ip_local_port_range net.ipv4.ip_local_port_range = 32768 60999 #
|
Linux 修改动态端口范围的方法:
1 2 3
| echo "net.ipv4.ip_local_port_range = 1024 65535" >> /etc/sysctl.conf sysctl -p #
|
3.2. Mac OS:
1 2 3 4 5 6 7 8 9 10 11 12
| » 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 OS 修改动态端口范围
1 2
| sysctl -w net.inet.ip.portrange.first=32768 #
|
4. 持久化 Mac 的配置(不建议)
1 2 3 4 5 6 7 8 9
| sudo touch /etc/sysctl.conf;
# kern.maxfiles=1048600 kern.maxfilesperproc=1048576 net.inet.ip.portrange.first=49152 net.inet.ip.portrange.last=65535
#
|
至于 ulimit -n 的值,可以写入到 .bashrc 文件中。