如何增加 nexus 中的描述符

如何增加 nexus 中的描述符

我正在尝试将 nexus 从 3.2.0 更新到 nexus 3.7.1,收到最大文件描述符错误消息

使用 docker 容器 sonatype/nexus3:3.7.1

我尝试将描述符增加到 65536,但使用 ulimit 时没有反映出来

我做了:cat /etc/security/limits.conf

nexus 硬文件 65536 nexus 软文件 65536

重启了我的docker容器

值: ulimit -n 1024 ulimit -Hn 4096 ulimit -Sn 1024

在此处输入图片描述

答案1

看起来在 Nexus 文档中有所解释https://help.sonatype.com/repomanager3/system-requirements#SystemRequirements-AdequateFileHandleLimits


在大多数 Linux 系统上,可以通过编辑 /etc/security/limits.conf 文件为特定用户设置持久限制。要将 nexus 用户的软限制和硬限制的最大打开文件数设置为 65536,请在 /etc/security/limits.conf 文件中添加以下行,其中“nexus”应替换为用于运行存储库管理器的用户 ID:

nexus - 无文件 65536

此更改仅在 nexus 进程用户下次打开新会话时生效。这实际上意味着您需要重新启动 NXRM。

在 Ubuntu 系统上有一个警告:Ubuntu 会忽略由 init.d 启动的进程的 /etc/security/limits.conf 文件。

因此,如果使用 init.d 启动 NXRM,请编辑 /etc/pam.d/common-session 并取消注释以下行(删除行开头的井号 # 和空格):

# 会话需要 pam_limits.so

有关更多信息,请参阅特定操作系统的文档。

如果您使用 systemd 启动服务器,则上述操作将不起作用。相反,请修改配置文件以添加 LimitNOFILE 行:

[单元]
描述=nexus 服务
之后=网络.目标

[服务]
类型=分叉  
限制NOFILE=65536
ExecStart=/opt/nexus/bin/nexus 启动
ExecStop=/opt/nexus/bin/nexus 停止
用户=nexus
中止时重新启动

[安装]
WantedBy=多用户.目标

答案2

OP 询问如何增加 Docker 容器(在本例中为 Nexus Repository 服务器)内运行的进程的 ulimit。虽然上面给出的答案涵盖了一些增加在 init 系统(如 systemd)下运行的进程的 ulimit 的场景,但 Docker 的机制有所不同。

要增加容器内的句柄数量,您需要在容器的 Dockerfile 中执行“ulimit”命令

RUN ulimit 65536

或者,如果您不能/不想构建自己的容器,那么您可以在启动容器的命令--ulimit nofile=65536:65536上将其作为参数传递。docker run

在 kubernetes 中,你可以通过向容器的 pod 规范中添加“资源”部分来完成同样的事情,如下所示:

   ...
     spec:
      containers:
      - name: Nexus
        image: sonatype/nexus3:3.7.1
        resources:
          limits:
            nofile: 65536  # Set the maximum number of file handles

相关内容