簡體   English   中英

如何確定Linux中的進程內存限制?

[英]How to determine the process memory limit in Linux?

我一直在網上搜索一下java進程可以在linux(red-hat)機器上占用多少內存。 (我不是在討論堆;相反,java 進程占用的全部內存量)

我無權在該機器上執行任何操作。 所以我不能簡單地執行一個消耗內存的程序,直到內存不足為止。

但是,我確實有權檢查配置文件等(例如:我試圖執行cat / proc / meminfo,但是我無法理解它;它似乎沒有任何結果代表我想知道的參數關於)。

我在一個單獨的紅帽機器上嘗試了一個java程序 - 我有權執行程序 - 我能夠看到java程序長大到3GB左右。

有什么方法可以找出一個進程可以獲得多少內存?

ulimit是你的朋友。 Java進程與其他進程沒有什么不同。 但如果你甚至不能運行ulimit -a,很難回答你的問題。

這是一個有用的讀物​​: 限制Linux中程序的時間和內存消耗 ,這會導致超時工具,它允許您按時間或內存消耗來保存進程(及其分支)。

我一直在處理這個確切的問題,如果你使用的是2.6.24或更高版本,那么找到最好的解決方案是使用cgroup / cgroups 一個例子是這樣的,這是默認的/etc/cgconfig.conf文件,底部添加了一個控制組。 此控制組將物理內存的大小限制為100MB,將總虛擬內存分配限制為200MB。

mount {
    cpuset  = /cgroup/cpuset;
    cpu = /cgroup/cpu;
    cpuacct = /cgroup/cpuacct;
    memory  = /cgroup/memory;
    devices = /cgroup/devices;
    freezer = /cgroup/freezer;
    net_cls = /cgroup/net_cls;
    blkio   = /cgroup/blkio;
}

group daemons/java_limited_process {
    memory {
        memory.limit_in_bytes = "104857600";
        memory.memsw.limit_in_bytes = "209715200";
    }
}

配置完成后,我可以像這樣添加進程

cgexec -g memory:daemons/java_limited_process /usr/local/tomcat/bin/startup.sh

這將限制主進程及其產生的任何子進程的內存。 它還具有查詢控制器中的內存使用情況的工具。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM