免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5679 | 回复: 3
打印 上一主题 下一主题

请问64位的centos单个进程支持的最大文件打开数量是多少 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-01-11 09:49 |只看该作者 |倒序浏览
记得在32位系统下,linux系统最大单个进程打开的文件数量是65535,但是在64位上好像没有上限,不知道是不是这样,记得有人说过在64位系统下打开的文件数量是和你磁盘的inodes 有关。
请教下各位是否是这样的呢。谢谢

论坛徽章:
0
2 [报告]
发表于 2011-01-11 12:27 |只看该作者
本帖最后由 seaquester 于 2011-01-11 12:28 编辑

一般是1024,执行 ulimit -n 就可以查到,CentOS v5.5 x64下面的结果:

[root@APP-SERVER ~]# uname -a
Linux APP-SERVER 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:14 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux

[root@APP-SERVER ~]# ulimit -n
1024

论坛徽章:
0
3 [报告]
发表于 2011-01-16 18:43 |只看该作者
谢谢楼上的。 不过不是这么理解的,     我想除去系统的限制,会最大支持到多少。

论坛徽章:
0
4 [报告]
发表于 2011-01-18 13:33 |只看该作者
本帖最后由 seaquester 于 2011-01-18 15:13 编辑

如果是这样,那么在32位系统下,linux系统最大单个进程打开的文件数量是也不是65535。
你可以测试一下,具体最大是多少,我还没有试出来:


  1. #include <unistd.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <errno.h>
  5. #include <sys/types.h>
  6. #include <sys/resource.h>
  7. #include <sys/stat.h>
  8. #include <fcntl.h>

  9. #define MAX_FILES       65550

  10. int main()
  11. {
  12.     struct rlimit r_limit, local_rlimit;
  13.     int n;
  14.     int rc;
  15.     char buf[260];


  16.     /* Get file open number limit */
  17.     getrlimit(RLIMIT_NOFILE, &local_rlimit);
  18.     printf("Current file_open_number limit: soft=%ld, hard=%ld\n",
  19.         local_rlimit.rlim_cur, local_rlimit.rlim_max);

  20.     /* Set file open number limit */
  21.     printf("\n");
  22.     r_limit.rlim_cur = MAX_FILES;
  23.     r_limit.rlim_max = MAX_FILES;
  24.     printf("Setting a file_open_number limit: soft=%ld, hard=%ld\n",
  25.         r_limit.rlim_cur, r_limit.rlim_max);
  26.     if (setrlimit(RLIMIT_NOFILE, &r_limit) == -1) {
  27.         printf("FAIL\n");
  28.         return 1;
  29.     }
  30.     printf("SUCCESS\n");
  31.     getrlimit(RLIMIT_NOFILE, &local_rlimit);
  32.     printf("Current NOFILE limit: soft=%ld, hard=%ld\n",
  33.         local_rlimit.rlim_cur, local_rlimit.rlim_max);

  34.     for (n = 1; n <= MAX_FILES; n++) {
  35.         sprintf(buf, "/tmp/%08d.tmp", n);
  36.         rc = open(buf, O_WRONLY | O_CREAT, 0644);
  37.         if (rc < 0) {
  38.             printf("open file %d error\n", n);
  39.             return 2;
  40.         } else {
  41.             printf("open file %d OK\n", n);
  42.         }
  43.     }

  44.     return 0;
  45. }

复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP