`
mryufeng
  • 浏览: 982419 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

最大文件句柄数对内存的消耗

阅读更多
sys_max_files在erlang beam里面2处地方消耗内存:

1.
static struct driver_data {
    int port_num, ofd, packet_bytes;
    ErtsSysReportExit *report_exit;
    int pid;
    int alive;
    int status;
} *driver_data; /* indexed by fd */

7 WORDS

driver_data = (struct driver_data *)erts_alloc(ERTS_ALC_T_DRV_TAB, max_files * sizeof(struct driver_data));
  
2.
  
static struct fd_data {
    char  pbuf[4];   /* hold partial packet bytes */
    int   psz;       /* size of pbuf */
    char  *buf;
    char  *cpos;
    int   sz;
    int   remain;  /* for input on fd */
} *fd_data; /* indexed by fd */

5 WORDS + 4

fd_data = (struct fd_data *)
erts_alloc(ERTS_ALC_T_FD_TAB, max_files * sizeof(struct fd_data));

1个file消耗的内存为 13WORDS 左右, 32位机器大概是64个字节,假如你不小心把 ulimit -n 10000000 也就是说100w个句柄, 那光这个就消耗64M 内存.所以没有必须的时候, 最大文件句柄数还是够用就行。



分享到:
评论

相关推荐

    C++中使用内存映射文件处理大文件

    当多个进程需要共享同一份大文件时,内存映射文件允许它们直接访问同一内存区域,而无需复制数据,减少了内存消耗和潜在的数据一致性问题。此外,由于操作系统负责内存管理和文件I/O,开发者可以专注于业务逻辑,而...

    系统内存不足解决方案

    其次,运行的程序过多也会消耗大量内存。这可能是因为同时运行的程序数量过多,或者在一个程序中打开了太多文档。这时,你可以尝试关闭不需要的程序,或者在文档之间切换,减少同时打开的文档数量。如果问题依然存在...

    什么是句柄

    1. **文件句柄(File Handle)**:当一个程序打开一个文件时,系统会返回一个句柄,该句柄可以用于后续对文件的操作,如读写、关闭等。 2. **窗口句柄(Window Handle)**:在图形用户界面中,每个窗口都有一个句柄...

    linux下查看系统进程占用的句柄数方法

    更多的句柄意味着更多的内存消耗,可能导致系统响应变慢。因此,建议根据实际需求谨慎设置这个值,通常不超过4096是一个合理的上限。 总的来说,理解如何查看和管理Linux进程的句柄数对于优化系统性能、排查问题...

    精彩编程与编程技巧-使用内存映射文件加快文件操作速度...

    1. **创建文件句柄**:使用`CreateFile`函数打开一个文件。 2. **创建内存映射对象**:使用`CreateFileMapping`函数创建一个内存映射文件对象。 3. **映射视图到内存**:使用`MapViewOfFile`函数将文件的一部分映射...

    weblogic内存占用过大调优

    - 优化EJB缓存和池配置,合理设置缓存大小,避免不必要的内存消耗。 2. **CPU使用率异常高处理**: - 检查是否有异常高的CPU使用率,特别是在用户态和内核态之间的转换频繁的情况。 - 使用`top`命令查看哪些进程...

    内存泄漏与内存溢出

    4. **资源管理不当**:比如,使用了某些不安全的API或编程习惯,导致资源(如文件句柄、网络连接等)没有得到及时释放,间接引起内存泄漏。 #### 影响及应对策略 内存泄漏会导致系统性能下降、响应变慢,严重时...

    .net 程序减少系统内存

    除了托管堆,.NET程序还可能需要使用非托管资源,如文件句柄、数据库连接、图形设备接口(GDI)对象等。这些资源不由CLR自动管理,需要程序员手动释放,否则也会导致资源泄露,增加系统内存负担。 ### 减少.NET程序...

    windowsAPI实现基本文件操作

    对于大文件,可能需要分块读写以避免内存消耗过大。 在进行这些操作时,还需要注意错误处理。例如,`CreateFile`可能会失败,因为文件不存在或权限不足;`ReadFile`和`WriteFile`可能由于磁盘空间不足或网络问题而...

    38 案例实战:数据库无法连接故障的定位,Too many connections.pdf

    通过检查MySQL的启动日志,发现了原因:操作系统对进程可以打开的文件句柄数有限制,这个限制值在Linux系统中是1024,导致MySQL最多只能建立214个连接。 连接池是数据库的性能优化组件,它可以有效管理数据库连接,...

    PHP文件流实现大文件上传

    这种方法可以有效地减少内存消耗,并允许用户在上传过程中暂停和恢复,提高了用户体验。 首先,我们需要理解什么是文件流。文件流是PHP处理输入/输出(I/O)的一种方式,它允许我们以流式的方式读取或写入文件,而...

    易语言大文本文件随机读取一行内容

    在这种情况下,如果逐行读取整个文件可能会消耗大量内存,尤其是在资源有限的环境下。易语言作为一款面向初学者和专业人士的中文编程环境,提供了一种有效的方法来解决这个问题:随机读取大文本文件的一行内容。本篇...

    文件操作

    - 打开(Open):建立一个文件句柄,以便后续操作。通常需要指定文件路径和打开模式,如读('r')、写('w')、追加('a')等。 - 读取(Read):从文件中获取数据,可以是整个文件内容,也可以是特定位置的字节或行...

    操作系统参数配置不当引起系统并发访问卡顿排查方法.doc

    - 修改系统级别的最大文件句柄数,编辑`/etc/sysctl.conf`并执行`sysctl -p`使更改生效。 2. **VMA(虚拟内存区域)数量限制**: - 调整`vm.max_map_count`以增加进程可拥有的虚拟内存区域数量,例如设置为262144...

    针对高并发低延迟运行环境低配的程序优化建议1

    - **最大文件句柄数**:通过调整`fs.file-max`和`fs.nr_open`等内核参数,增加系统允许的最大文件句柄数,以应对更多的并发连接。 - **服务最大文件句柄数**:在`systemd`配置和服务限制定制中设定更高的`...

    linux_ulimit的使用

    2. **修改最大文件句柄数**: ``` ulimit -n 4096 ``` 将最大文件句柄数设置为 4096。这对于需要打开大量文件的应用程序非常有用,比如 Web 服务器或数据库服务器。 3. **设置最大核心文件大小**: ``` ...

    内存释放专家

    例如,当一个程序结束时,它可能仍有未关闭的文件句柄或未释放的数据结构,这些都会占用内存,久而久之,系统可能会变得卡顿甚至崩溃。 内存释放专家的工作原理通常包括以下步骤: 1. **监控与分析**:工具会持续...

    内存泄露定位.zip

    2. **理解内存泄露的类型**:内存泄露不仅限于忘记释放的内存,还包括悬挂指针、未关闭的文件句柄、数据库连接等资源。 3. **结合代码审查**:虽然VLD提供了详细的堆栈跟踪,但理解代码逻辑仍然是解决内存泄露的关键...

    Hadoop 集群(第 12 期副刊)-HBase性能优化.pdf

    - 修改`/proc/sys/fs/file-max`文件,调整内核级别的最大文件句柄数。 例如,在`/etc/security/limits.conf`文件中添加如下行: ```sh * soft nofile 65536 * hard nofile 131072 ``` 这里的`*`表示对所有用户...

    浅谈C_C++内存泄漏及其检测工具

    此外,资源泄漏是另一个与内存泄漏相关的问题,它涉及操作系统资源的分配与释放,如文件句柄、GDI对象、套接字等。资源泄漏如果不被处理,也会造成系统资源耗尽,系统稳定性降低。 内存泄漏的检测和预防是避免内存...

Global site tag (gtag.js) - Google Analytics