目前ulimit -n
显示10000
.我想把它增加到40000
.我编辑了"/etc/sysctl.conf"并放了fs.file-max=40000
.我还编辑/etc/security/limits.conf
并更新了硬和软值.但仍然是ulimit节目10000
.完成所有这些更改后,我重新启动了笔记本电脑.我可以访问root密码.
usr_name@usr_name-lap:/etc$ /sbin/sysctl fs.file-max
fs.file-max = 500000
Run Code Online (Sandbox Code Playgroud)
添加以下行/etc/security/limits.conf
-
* soft nofile 40000
* hard nofile 40000
Run Code Online (Sandbox Code Playgroud)
我还添加了以下内容/etc/pam.d/su
-
session required pam_limits.so
Run Code Online (Sandbox Code Playgroud)
我已经尝试过在其他论坛上提供的所有可能的方式,但我可以达到最大限度,但10000
不能超过这个限制.可能是什么问题?
我正在进行此更改,因为neo4j
抛出最大打开文件限制达到错误.
有关堆栈分配的许多相关问题是可以理解的
但是在各种*nix机器上,我可以发出bash命令
ulimit -s unlimited
Run Code Online (Sandbox Code Playgroud)
或者csh命令
set stacksize unlimited
Run Code Online (Sandbox Code Playgroud)
这如何改变程序的执行方式?是否对程序或系统性能有任何影响(例如,为什么这不是默认值)?
如果更多的系统细节是相关的,我主要关注在x86_64硬件上运行的Linux上使用GCC编译的程序.
我需要限制我使用subprocess.call从python进程生成的外部命令行应用程序所花费的时间和cpu的数量,主要是因为有时候生成的进程被卡住并将cpu的引脚设置为99%.
nice和ulimit似乎是合理的方法,但我不确定他们如何与子进程交互.
有没有办法将nice和ulimit应用于subprocess.call生成的进程?是否有更好的python-native替代品?
这是在linux(ubuntu)系统上.
我需要在docker容器上正确设置文件描述符限制我用ssh连接到容器(https://github.com/phusion/baseimage-docker)
已经尝试过:
输出总是一样的.
bash: ulimit: open files: cannot modify limit: Operation not permitted
Run Code Online (Sandbox Code Playgroud) 我的程序耗尽了内存,就像我运行它们的时间的一半.在Linux下,我可以使用ulimit -v mem-in-kbytes设置可用内存的硬限制.实际上,我使用ulimit -S -v mem-in-kbytes,所以我在程序中得到了正确的内存分配问题,我可以中止.
但是...... ulimit在OSX 10.6中不起作用.我尝试过使用-s和-m选项,但它们无法正常工作.
在2008年,MacRumors对同一个问题进行了一些讨论,但没有人提出一个好的选择.应该是一个程序可以学习它花费太多内存或通过操作系统设置限制的方式.
SSH进入运行Amazon Linux AMI的EC2实例后,我试过:
ulimit -n 20000
Run Code Online (Sandbox Code Playgroud)
...并收到以下错误:
-bash: ulimit: open files: cannot modify limit: Operation not permitted
Run Code Online (Sandbox Code Playgroud)
但是,shell允许我减少此数字,仅适用于当前会话.
无论如何都要增加 EC2实例的ulimit (永久)?
在我的机器Linux机器ulimit -n
给出1024
.这段代码:
from tempfile import mkstemp
for n in xrange(1024 + 1):
f, path = mkstemp()
Run Code Online (Sandbox Code Playgroud)
在最后一行循环失败:
Traceback (most recent call last):
File "utest.py", line 4, in <module>
File "/usr/lib/python2.7/tempfile.py", line 300, in mkstemp
File "/usr/lib/python2.7/tempfile.py", line 235, in _mkstemp_inner
OSError: [Errno 24] Too many open files: '/tmp/tmpc5W3CF'
Error in sys.excepthook:
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/apport_python_hook.py", line 64, in apport_excepthook
ImportError: No module named fileutils
Run Code Online (Sandbox Code Playgroud)
好像我已经打开了许多文件-但type
的f
和path
仅仅是int
和 …
根据联机帮助页,ulimit中的"-l"表示"可能锁定到内存中的最大大小".这句话到底意味着什么?它如何影响正在运行的程序?
所以,我在ReactNative中获得了第一个从Windows for Android OS运行的项目.在Mac上进行结账,以相同的方式配置它,并且当我尝试启动react包管理器时使用react-native start
并获得以下错误:
child_process.js:506
throw err;
^
Error: spawnSync /Users/UserName/Desktop/Path/node_modules/react-native/local-cli/setup_env.sh EACCES
at exports._errnoException (util.js:1022:11)
at spawnSync (child_process.js:461:20)
at Object.execFileSync (child_process.js:498:13)
at Object.run (/Users/UserName/Desktop/Path/node_modules/react-native/local-cli/cliEntry.js:156:16)
at Object.<anonymous> (/usr/local/lib/node_modules/react-native-cli/index.js:117:7)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
Run Code Online (Sandbox Code Playgroud)
我知道它只会尝试将ulimit(打开文件限制)设置为2048,这对非root用户是允许的.还试着用sudo运行命令给它root权限.ulimit -a
在机器上运行显示打开文件限制为256,我尝试将默认值2048更改为此.尝试将它增加到4096以及完全删除命令.似乎没有任何区别,错误仍然存在.
使用创建一个新项目react-native init DemoProject
,打包器似乎从该文件夹开始,所以问题是其他的?
我的package.json是:
{
"name": "React Native",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
"test": "jest"
},
"dependencies": {
"native-base": "^0.5.18",
"react": "15.4.1",
"react-addons-shallow-compare": "^15.4.1", …
Run Code Online (Sandbox Code Playgroud) 我在具有16GB Ram和64位操作系统的Linux机器上运行Python 2.7.我写的一个python脚本可以将太多的数据加载到内存中,这会使机器速度降低到我甚至无法再杀死进程的程度.
虽然我可以通过调用来限制内存:
ulimit -v 12000000
Run Code Online (Sandbox Code Playgroud)
在运行脚本之前的shell中,我想在脚本本身中包含一个限制选项.在我看的每个地方,该resource
模块都被认为具有与之相同的能力ulimit
.但是打电话:
import resource
_, hard = resource.getrlimit(resource.RLIMIT_DATA)
resource.setrlimit(resource.RLIMIT_DATA, (12000, hard))
Run Code Online (Sandbox Code Playgroud)
在我的脚本开头做什么都没有.即使设置低至12000的值也从未使过程崩溃.我尝试了相同的RLIMIT_STACK
,同样的结果.奇怪的是,打电话:
import subprocess
subprocess.call('ulimit -v 12000', shell=True)
Run Code Online (Sandbox Code Playgroud)
什么都不做.
我究竟做错了什么?我在网上找不到任何实际的用法示例.
编辑:对于任何好奇的人,使用subprocess.call
不起作用,因为它创建一个(惊喜,惊喜!)新进程,它独立于当前python程序运行的进程.