Linux #打开文件限制

发布于 2024-12-11 19:54:53 字数 308 浏览 0 评论 0原文

我们面临着由于超出打开文件限制而导致进程卡住的情况。全局设置 file-max 设置得非常高(在 sysctl.conf 中设置)&每个用户的值也在 /etc/security/limits.conf 中设置为较高的值。即使 ulimit -n 也反映了作为无头用户(进程所有者)运行时的每个用户的值。所以问题是,此更改是否需要重新启动系统(我的理解是不需要)?有没有人遇到过类似的问题?我正在运行 ubuntu lucid &该应用程序是一个java进程。 #of 临时端口范围也足够高,&在问题期间检查时,该进程打开了 #1024(注意默认值)文件(如 lsof 所报告)。

we are facing a situation where a process gets stuck due to running out of open files limit. The global setting file-max was set extremely high (set in sysctl.conf) & per-user value also was set to a high value in /etc/security/limits.conf. Even ulimit -n reflects the per-user value when ran as that head-less user (process-owner). So the question is, does this change require system reboot (my understanding is it doesn't) ? Has anyone faced the similar problem ? I am running ubuntu lucid & the application is a java process. #of ephemeral port range too is high enough, & when checked during the issue, the process had opened #1024 (Note the default value) files (As reported by lsof).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

守望孤独 2024-12-18 19:54:53

您可能遇到的一个问题是 select 使用的 fd_set 仅限于 FD_SETSIZE,该值在编译时固定(在本例中为 JRE),即限制为 1024。

#define FD_SETSIZE      __FD_SETSIZE
/usr/include/bits/typesizes.h:#define   __FD_SETSIZE        1024

幸运的是,C 库和内核都可以处理任意大小的 fd_set,因此,对于已编译的 C 程序,可以提高该限制。

One problem you might run into is that the fd_set used by select is limited to FD_SETSIZE, which is fixed at compile time (in this case of the JRE), and that is limited to 1024.

#define FD_SETSIZE      __FD_SETSIZE
/usr/include/bits/typesizes.h:#define   __FD_SETSIZE        1024

Luckily both the c library and the kernel can handle arbitrary sized fd_set, so, for a compiled C program, it is possible to raise that limit.

晨与橙与城 2024-12-18 19:54:53

考虑到您已正确编辑 sysctl.conf/etc/security/limits.conf 中的 file-max 值; then:

edit /etc/pam.d/login, adding the line: 
session required /lib/security/pam_limits.so

然后执行

#ulimit -n unlimited

请注意,您可能需要注销并重新登录才能使更改生效。

Considering you have edited file-max value in sysctl.conf and /etc/security/limits.conf correctly; then:

edit /etc/pam.d/login, adding the line: 
session required /lib/security/pam_limits.so

and then do

#ulimit -n unlimited

Note that you may need to log out and back in again before the changes take effect.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文