mac os OS X 优山美地(Yosemite)如何提高最大连接数限制

本文介绍了在Mac OS Yosemite上解决'too many open files'错误的方法,包括创建配置文件以增加系统最大打开文件数和最大进程数,并通过修改sysctl.conf文件扩大端口范围。详细步骤包括编辑limit.maxfiles.plist和limit.maxproc.plist,以及重启或执行launchctl limit使设置生效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

超过系统最大文件打开数之后,系统报 too many open files

mac os yosemite 之后,网上原来提高最大打开端口号限制的方法都不可行了。最新的办法而下:

1, 查看限制:

 ulimit -a


2,  创建新的配置文件,配置系统打开最多文件限制(如果没有的话)

sudo vi /Library/LaunchDaemons/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>655360</string>

          <string>655360</string>

        </array>

      <key>RunAtLoad</key>

        <true/>

      <key>ServiceIPC</key>

        <false/>

    </dict>

  </plist>


3,创建每个最大进程数限制的配置文件:

 sudo vi /Library/LaunchDaemons/limit.maxproc.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.maxproc</string>

      <key>ProgramArguments</key>

        <array>

          <string>launchctl</string>

          <string>limit</string>

          <string>maxproc</string>

          <string>2048</string>

          <string>2048</string>

        </array>

      <key>RunAtLoad</key>

        <true />

      <key>ServiceIPC</key>

        <false />

    </dict>

  </plist>


4,以上两个文件 需要owned byroot:wheel

读写权限:-rw-r--r--

5,执行launchctl limit是配置生效。也许需要重启电脑(本人系统需要, OS X 10.10.3)

最好查看配置是否生效:

$ ulimit -a

core file size          (blocks, -c) 0

data seg size           (kbytes, -d) unlimited

file size               (blocks, -f) unlimited

max locked memory       (kbytes, -l) unlimited

max memory size         (kbytes, -m) unlimited

open files                      (-n) 655360

pipe size            (512 bytes, -p) 1

stack size              (kbytes, -s) 8192

cpu time               (seconds, -t) unlimited

max user processes              (-u) 2048

virtual memory          (kbytes, -v) unlimited


6,打开端口后限制。

查看socket端口范围限制:

$ sysctl -a | grep port

kern.ds_supgroups_supported: 1

kern.ipc_portbt: 0

kern.hv_support: 1

vfs.generic.nfs.client.callback_port: 0

vfs.generic.nfs.server.require_resv_port: 0

vfs.generic.nfs.server.export_hash_size: 64

net.inet.ip.portrange.lowfirst: 1023

net.inet.ip.portrange.lowlast: 600

net.inet.ip.portrange.first: 1024

net.inet.ip.portrange.last: 65535

net.inet.ip.portrange.hifirst: 49152

net.inet.ip.portrange.hilast: 65535

net.inet.tcp.randomize_ports: 0

net.inet.udp.randomize_ports: 1

net.inet.ipsec.esp_port: 4500

machdep.misc.fast_uexc_support: 1


系统默认端口打开范围大小只有大概1500个,

修改办法:

打开(没有就创建)文件 /etc/sysctl.conf

sudo vi  /etc/sysctl.conf

添加以下两行:

net.inet.ip.portrange.first=1024

net.inet.ip.portrange.last=65535

第一行指定最小端口,低于1024的端口,系统预留,部分已经默认分配给常见应用了。一般需要root才能分配这低于1024的端口范围,不建议使用,除非你知道你在做什么。

第二行最大只能到达65535=2^16 -1。因为ipv4端口只占16bits,因此最大只能到达65535。

因此一个客户端,配置一个ipv4地址,能够创建的最大连接数为65535-1024=64511。

如何使用mac os 创建连接测试服务器,考虑带其他应用程序占用的端口,一般配置最大创建64000个连接,基本到达系统最大限制了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值