为了能到远方,脚下的每一步都不能少.|

大象。

园龄:8年1个月粉丝:1关注:6

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,进程的最大连接数要小于等于全局连接数

永久修改,需要在 /etc/sysctl.conf 里加上类似的下述内容

kern.maxfiles=20480
kern.maxfilesperproc=18000

这个文件可能需要自行创建

2. ulimit 命令

$ ulimit -n
4864
#### 显示当前shell能打开的最大文件数,默认值:4864,该值总是小于 kern.maxfilesperproc 的值,因为一个 shell 就是一个进程。
$ ulimit -n 1048576
### 设置当前shell能打开的最大文件数为 1048576,该值不能大于 kern.maxfilesperproc ,否则会提示设置失败。

3. 动态端口范围

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, 其他的类似。

4. launchd 对进程的限制

获取当前的限制:

$ launchctl limit maxfiles

输出类似这样:

maxfiles 256 unlimited

其中前一个是软限制,后一个是硬件限制。

临时修改:

$ sudo launchctl limit maxfiles 65536 200000

系统范围内修改则需要在文件夹 /Library/LaunchDaemons 下创建一个 plist 文件 limit.maxfiles.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>limit.maxfiles</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>limit</string>
<string>maxfiles</string>
<string>65536</string>
<string>200000</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>

修改文件权限

$ sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist
$ sudo chmod 644 /Library/LaunchDaemons/limit.maxfiles.plist

载入新设定

$ sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist

5. 持久化 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 文件中。

本文作者:大象。

本文链接:https://www.cnblogs.com/lliuhuan/p/18460082

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   大象。  阅读(71)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起