溫馨提示×

Ubuntu ulimit如何設置以避免OOM

小樊
48
2025-06-10 01:04:28
欄目: 智能運維

在Ubuntu系統中,ulimit命令用于控制shell進程及其子進程可以使用的資源限制。為了避免OOM(Out of Memory)錯誤,你可以設置一些與內存相關的限制。以下是一些常用的ulimit設置:

  1. 設置虛擬內存限制

    ulimit -v <size_in_kb>
    

    例如,設置為2GB:

    ulimit -v 2097152
    
  2. 設置物理內存限制

    ulimit -m <size_in_kb>
    

    例如,設置為1GB:

    ulimit -m 1048576
    
  3. 設置最大數據段大小

    ulimit -d <size_in_kb>
    

    例如,設置為512MB:

    ulimit -d 524288
    
  4. 設置最大文件大小

    ulimit -f <size_in_blocks>
    

    例如,設置為1GB:

    ulimit -f 1073741824
    
  5. 設置最大堆棧大小

    ulimit -s <size_in_kb>
    

    例如,設置為1GB:

    ulimit -s 1048576
    
  6. 設置最大進程數

    ulimit -u <number_of_processes>
    

    例如,設置為1024:

    ulimit -u 1024
    
  7. 設置打開文件描述符的最大數量

    ulimit -n <number_of_open_files>
    

    例如,設置為4096:

    ulimit -n 4096
    

持久化設置

上述ulimit設置僅在當前shell會話中有效。如果你希望這些設置在系統重啟后仍然生效,可以將它們添加到系統的啟動腳本中。以下是一些常見的方法:

方法一:修改 /etc/security/limits.conf

編輯 /etc/security/limits.conf 文件,添加以下行:

* soft as unlimited
* hard as unlimited
* soft memlock unlimited
* hard memlock unlimited
* soft nofile 4096
* hard nofile 4096

方法二:修改 /etc/pam.d/common-session

編輯 /etc/pam.d/common-session 文件,添加以下行:

session required pam_limits.so

方法三:修改 /etc/pam.d/common-session-noninteractive

編輯 /etc/pam.d/common-session-noninteractive 文件,添加以下行:

session required pam_limits.so

方法四:修改 /etc/systemd/system.conf/etc/systemd/user.conf

如果你使用的是systemd,可以在 /etc/systemd/system.conf/etc/systemd/user.conf 文件中添加以下行:

DefaultLimitNOFILE=4096

然后重新加載systemd配置并重啟服務:

sudo systemctl daemon-reload
sudo systemctl restart <your_service>

通過這些方法,你可以確保在系統重啟后,內存和其他資源的限制仍然有效,從而避免OOM錯誤。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女