我正在创建一个负载测试程序,它使用libev为我正在处理的应用程序创建大量开放式TCP连接.由于nofiles限制,目前它以256个连接轰炸:
ulimit -n
256
Run Code Online (Sandbox Code Playgroud)
通过执行以下操作,我可以将此值增加到1024:
ulimit -n 1024
Run Code Online (Sandbox Code Playgroud)
但我不能进一步增加它.理想情况下,我想将其设置为1048576.它给出以下错误:
ulimit: open files: cannot modify limit: Invalid argument
Run Code Online (Sandbox Code Playgroud)
如何在osx上进一步增加ulimit?
我正在使用tomcat 7和java 1.7开发debian服务器.这是一个收到多个TCP连接的应用程序,每个TCP连接都是java进程打开的文件.
看着/proc/pid of java/fd我发现,有时,打开文件的数量超过1024,当发生这种情况时,我会在catalina.out日志中找到stacktrace_SocketException: Too many open files_
我发现有关此错误的一切,人们都提到了ulimit,我已经改变了这个问题并且错误一直在发生.这是配置:
在 /etc/security/limits.conf
root soft nofile 8192
root hard nofile 8192
Run Code Online (Sandbox Code Playgroud)
在 /etc/sysctl.conf
fs.file-max = 300000
Run Code Online (Sandbox Code Playgroud)
该ulimit -a命令返回:
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 16382
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 8192
pipe size (512 bytes, …Run Code Online (Sandbox Code Playgroud) 在我的Macbook Pro 15'(16千兆RAM,4个物理内核)上从Mac iOS(El Capitan)上的shell执行gatling(加载测试工具)时,我的错误是"打开的文件过多".
我花了几天时间来解决这个问题,没有任何成功:
我在/Library/LaunchDaemons/limit.maxfiles.plist中创建了一个文件,其中包含从Web复制的XML文件内容,没有结果.
sudo ulimit -n 15000不起作用.
我使用以下内容创建了一个文件/etc/sysctl.conf
kern.maxfiles = 20480
kern.maxfilesperproc = 20480
我认为"/ Library/LaunchDaemons /"中的xml文件似乎有一些效果,因为当我更改maxfiles的值时,命令"sudo launchctl limit"向我显示我在XML文件中输入的值,以及使用某个值调用"ulimit -n",它接受小于该值的每个值,但是当我调用"ulimit -n"时,结果是每次都是相同的"4096".
我在Java中看到,限制是10240,所以我尝试了VM选项(-XX:-MaxFDLimit)而没有任何影响.
奇怪的是,当我从Intellij(IDE)执行Gatling时,我可以直到10 200个套接字.同样的事情,即使在所有组合中执行所有命令(ulimit,sysctl,launchctl,...)之后,也会产生不同的效果.
最好的祝福