标签: ulimit

Windows上的资源限制?

什么是与Python resource模块和POSIX 在Unix系统上公开的资源限制机制的Windows等价物setrlimit

具体来说,我将子进程的处理器时间限制为几秒钟.如果它未在约束内完成,则终止.

python windows posix ulimit setrlimit

10
推荐指数
1
解决办法
2210
查看次数

在ubuntu下的ulimit -t

我正在运行Ubuntu Linux(2.6.28-11-generic#42-Ubuntu SMP Fri Apr 17 01:57:59 UTC 2009 i686 GNU/Linux),似乎命令"ulimit -t"无法正常工作.我跑了:

ulimit -t 1; myprogram

'myprogram'是无限循环的地方.我预计程序会在1秒后中断,但它并没有停止.我在Linux Fedora安装上尝试了同样的事情,它按预期工作.

是否有一些配置必须设置才能正常工作?

- tsf

linux ubuntu ulimit

9
推荐指数
1
解决办法
8756
查看次数

需要根据我自己的服务器需求"计算"最佳ulimit和fs.file-max值

需要根据我自己的服务器需求"计算"最佳ulimit和fs.file-max值.请不要与"如何在各种Linux发行版中设置这些限制"问题发生冲突.

我在问:

  1. 是否有任何好的指南详细解释,用于ulimit的参数?(> 2.6系列内核)
  2. 是否有任何好的指南来显示fs.file-max使用指标?

实际上我可以在网上找到一些旧的参考资料:http: //www.faqs.org/docs/securing/chap6sec72.html "我们拥有的每4M内存就像256一样合理:即128 MB的机器RAM,将其设置为8192 - 128/4 = 32 32*256 = 8192"

任何最新的参考表示赞赏.

linux-kernel ulimit sysctl

9
推荐指数
1
解决办法
1万
查看次数

如何从适用于其子代的Perl脚本中设置ulimit?

我有一个Perl脚本,它执行各种安装步骤来为我们公司设置开发盒.它运行各种shell脚本,其中一些由于低于所需的ulimits(特别-s是我的情况下的堆栈大小)而崩溃.

因此,我想设置一个ulimit适用于children从我的主Perl中启动的所有脚本(),但我不知道如何实现这一点 - 任何尝试从脚本中调用ulimit只会将其设置为特定的子壳,立即退出.

我知道我可以ulimit在运行Perl脚本之前调用或使用/etc/security/limits.conf但我不希望用户知道任何这些 - 他们应该只知道如何运行脚本,这应该为他们处理所有这些.

我也可以在ulimit每次运行命令时运行,这样ulimit -s BLA; ./cmd但我不想每次都复制它,我觉得那里有一个更好,更清洁的解决方案.

另一个疯狂的"解决方法"是创建一个名为BLA.sh的包装脚本,它将设置ulimit并调用BLA.pl,但同样,这是我的脑海中的黑客,现在我有2个脚本(我甚至可以制作BLA.pl使用"ulimit -s BLA; ./BLA.pl --foo"调用自己,并根据它是否看到--foo或不同而采取不同的行为,但这甚至比以前更黑.

最后,显然我可以安装BSD :: Resource,但我想避免使用外部依赖.

那么,什么是 Perl脚本内设置的ulimit,使之适用于所有的孩子呢?

谢谢.

linux perl ulimit

8
推荐指数
3
解决办法
9476
查看次数

关闭套接字不释放文件描述符

当进行一些服务器代码,我写了一个压力测试,我发现,即使我的描述符句柄调用close()(和验证错误的结果)的描述符没有被释放,最终导致accept()方法返回一个错误"打开文件太多".

现在我明白这是因为ulimit,我不明白为什么如果我在每个同步接受/读/发送周期后调用close(),我会遇到它?

我通过运行带有lsof的监视来验证描述符实际上是在那里:

ctsvr  9733 mike 1017u  sock     0,7      0t0 3323579 can't identify protocol
ctsvr  9733 mike 1018u  sock     0,7      0t0 3323581 can't identify protocol
...

当然,大约有1000个左右.此外,使用netstat检查我可以看到没有挂起的TCP状态(没有WAIT或STOPPED或任何东西).

如果我只是从客户端执行单个connect/send/recv,我会注意到套接字确实保留在lsof中; 所以这甚至不是负载问题.

服务器在Ubuntu Linux 64位计算机上运行.

有什么想法吗?

c++ sockets linux ulimit

8
推荐指数
2
解决办法
4729
查看次数

如何从golang程序设置ulimit -n?

我的目的是在golang程序中设置ulimit -n,这样我就不必在全局范围内设置它,而是在程序中限制它.

找到systemcalls setrlimit并获得相同的rlimit.(http://linux.die.net/man/2/setrlimit)

但是当我尝试同样的示例程序时,我在设置值时收到错误说无效参数.

    package main

    import (
         "fmt"
         "syscall"
     )

    func main() {

        var rLimit syscall.Rlimit

        err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLimit)

        if err != nil {
                fmt.Println("Error Getting Rlimit ", err)
        }
        fmt.Println(rLimit)

        rLimit.Max = 999999
        rLimit.Cur = 999999

        err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rLimit)
        if err != nil {
            fmt.Println("Error Setting Rlimit ", err)
         }
         err = syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLimit)

         if err != nil {
            fmt.Println("Error Getting Rlimit ", err)
         }
         fmt.Println("Rlimit Final", rLimit)
         }
Run Code Online (Sandbox Code Playgroud)

获得的输出是:

george@george-Not-Specified ~/work/odesk/progium/trial $ …
Run Code Online (Sandbox Code Playgroud)

operating-system network-programming system-calls go ulimit

8
推荐指数
1
解决办法
6960
查看次数

Duplicity不喜欢Mavericks上的最大打开文件设置

我使用duplicity来备份一些文件.我现在正在尝试恢复到我的Mac来测试备份,但是得到以下错误:

> duplicity me@backupserver.io/backup_dr ~/restored_files
Max open files of 256 is too low, should be >= 1024.
Use 'ulimit -n 1024' or higher to correct.
Run Code Online (Sandbox Code Playgroud)

所以我尝试:

sudo ulimit -n 1024
Run Code Online (Sandbox Code Playgroud)

看起来很好,然后运行:

> ulimit -a
...
open files                      (-n) 256
...
Run Code Online (Sandbox Code Playgroud)

你如何实际获得改变的限制?我没有运气谷歌:(

macos ulimit duplicity

8
推荐指数
1
解决办法
917
查看次数

处理不受setrlimit限制的资源

我写了一个简单的程序来限制它的数据大小为65Kb,并验证相同我分配一个超过65Kb的虚拟内存,逻辑上如果我正在做所有正确(如下)malloc调用应该失败,不是吗?

#include <sys/resource.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

int main (int argc, char *argv[])
{
  struct rlimit limit;


  /* Get max data size . */
  if (getrlimit(RLIMIT_DATA, &limit) != 0) {
    printf("getrlimit() failed with errno=%d\n", errno);
    return 1;
  }

  printf("The soft limit is %lu\n", limit.rlim_cur);
  printf("The hard limit is %lu\n", limit.rlim_max);

  limit.rlim_cur = 65 * 1024;
  limit.rlim_max = 65 * 1024;

  if (setrlimit(RLIMIT_DATA, &limit) != 0) {
    printf("setrlimit() failed with errno=%d\n", errno);
    return 1;
  }

  if (getrlimit(RLIMIT_DATA, &limit) != …
Run Code Online (Sandbox Code Playgroud)

c malloc memory-management ulimit setrlimit

8
推荐指数
1
解决办法
2109
查看次数

Kafka 代理节点因“打开的文件太多”错误而宕机

我们有一个 3 节点的 Kafka 集群部署,总共有 35 个主题,每个主题有 50 个分区。总的来说,我们已经配置了replication factor=2. 我们看到一个非常奇怪的问题,Kafka 节点间歇性地停止响应并显示错误:

ERROR Error while accepting connection (kafka.network.Acceptor)
java.io.IOException: Too many open files
  at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method)
  at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:422)
  at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:250)
  at kafka.network.Acceptor.accept(SocketServer.scala:460)
  at kafka.network.Acceptor.run(SocketServer.scala:403)
  at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)

我们已经部署了最新的 Kafka 版本并使用 spring-kafka 作为客户端:

kafka_2.12-2.1.0(CentOS Linux 版本 7.6.1810(核心))

  • 有以下三点观察:
    1. 如果我们这样做lsof -p <kafka_pid>|wc -l,我们得到的打开描述符总数只有 7000 左右。
    2. 如果我们这样做lsof|grep kafka|wc -l,我们将获得大约 150 万个开放 FD。我们已经检查过它们都只属于 Kafka 进程。
    3. 如果我们将系统降级到 Centos6,那么 outlsof|grep kafka|wc -l会回到 7000。

我们已尝试将文件限制设置为非常大,但仍然出现此问题。以下是为 kafka 进程设置的限制:

cat /proc/<kafka_pid>/limits
    Limit …
Run Code Online (Sandbox Code Playgroud)

centos lsof ulimit apache-kafka spring-kafka

8
推荐指数
1
解决办法
7298
查看次数

将ulimit设置得真的很高吗?

我在Ubuntu 12上遇到Tomcat7打开文件过多的问题,所以我将打开文件数量的硬限制和软限制分别从4096和1024增加到16384.现在我没有收到任何更多的错误打开文件,但整体CPU%似乎已经上升.增加max文件的数量是否也有一些CPU时间成本?如果没有,为什么不设置极高的ulimit?

ubuntu ulimit tomcat7

7
推荐指数
1
解决办法
2331
查看次数