【问题标题】:From terminal in ubuntu, change ulimit for file descriptor number从 ubuntu 的终端,更改文件描述符编号的 ulimit
【发布时间】:2012-05-11 21:27:57
【问题描述】:

在终端上,我试图更改打开的文件描述的数量,它们不会粘住。如何从终端更改 ulimit?根据下面,当我从终端运行 uwsgi 时,fd 位于 1024。

ubuntu@ubuntu:/tmp$ uwsgi --loop gevent --socket :3031 --wsgi-file /home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbAsyncServers/bottleServer.py --master --async 100 --listen 300 --processes 1
*** Starting uWSGI 1.2.1 (64bit) on [Sat May 12 05:24:25 2012] ***
compiled with version: 4.5.2 on 11 May 2012 03:42:53
detected number of CPU cores: 2
current working directory: /tmp
detected binary path: /usr/local/bin/uwsgi
your memory page size is 4096 bytes
detected max file descriptor number: 1024
async fd table size: 1024
allocated 103200 bytes (100 KB) for 100 cores per worker.
lock engine: pthread robust mutexes
uwsgi socket 0 bound to TCP address :3031 fd 3
Python version: 2.7.1+ (r271:86832, Apr 11 2011, 18:37:12)  [GCC 4.5.2]
*** Python threads support is disabled. You can enable it with --enable-threads ***
Python main interpreter initialized at 0xd9bfd0
your server socket listen backlog is limited to 300 connections
*** Operational MODE: async ***
WSGI app 0 (mountpoint='') ready in 8 seconds on interpreter 0xd9bfd0 pid: 17688 (default app)
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 17688)
spawned uWSGI worker 1 (pid: 17742, cores: 100)
*** running gevent loop engine [addr:0x4503f0] ***
!!! Running gevent without threads IS NOT recommended, enable them with --enable-threads !!!

【问题讨论】:

  • 你究竟想如何改变它?
  • 我尝试了以下 - ulimit 60000
  • 让我们尝试更多细节。您在同一个 shell 中运行它,并且您正在验证它实际上首先做了什么?请提供您正在运行的命令序列和位置的完整详细信息。
  • 1) 在 SAME shell 中 ulimit 60000 然后 2) uwsgi --loop gevent --socket :3031 --wsgi-file...
  • 您测试了ulimit 输出首先改变了吗?无论如何,nonroot 可能无法将其提高到那么高。研究软限制和硬限制之间的区别,以及谁能改变它们。

标签: ubuntu uwsgi ulimit


【解决方案1】:

在尝试增加 Nginx 的文件描述符数量时,我遇到了类似的问题。我必须在 /etc/security/limits.conf 中为 www-data 用户更改 nofile

www-data    hard    nofile    16384
www-data    soft    nofile    16384

更改后 ulimit 仍然显示限制为 1024。解决方案是在 /etc/pam.d/su 中启用 *pam_limits*。我只是取消了该行的注释:

session    required    pam_limits.so

更改此值不需要重新启动,我只是再次以 www-data 身份登录。现在,运行ulimit -a 会显示值16384

希望这会有所帮助。

【讨论】:

  • 为了未来的 googlers:显然有一个名为 prlimit 的工具可以在没有开始的情况下更改限制,但多年后它仍然不在 util-linux 中。有一个小实用程序 here 可以在任何新内核上运行。
猜你喜欢
  • 1970-01-01
  • 2011-03-26
  • 1970-01-01
  • 1970-01-01
  • 2011-06-05
  • 1970-01-01
  • 2017-07-08
  • 2020-03-26
  • 1970-01-01
相关资源
最近更新 更多