1. 程式人生 > >cgroup限制程序記憶體大小

cgroup限制程序記憶體大小

宣告:

本部落格歡迎轉發,但請保留原作者資訊!

內容系本人學習、研究和總結,如有雷同,實屬榮幸!


以限制mongodb的記憶體大小為例。

Cgroup限制方法:  

mkdir /cgroup/memory/test/  
echo 50M > /cgroup/memory/test/memory.limit_in_bytes  
echo 50M > /cgroup/memory/test/memory.memsw.limit_in_bytes  
cgexec -g memory:test mongod -port 27017 --bind_ip 127.0.0.1 --dbpath /var/lib/mongo  

通過cgroup限制後,當記憶體達到限額,程序會被kill。

 
[[email protected] mongo]# cgexec -g memory:test mongod -port 27017 --bind_ip 127.0.0.1 --dbpath /var/lib/mongo  
2014-07-18T23:20:53.228+0800 [initandlisten] MongoDB starting : pid=2529 port=27017 dbpath=/var/lib/mongo 64-bit host=centos  
2014-07-18T23:20:53.228+0800 [initandlisten] db version v2.6.3  
2014-07-18T23:20:53.228+0800 [initandlisten] git version: 255f67a66f9603c59380b2a389e386910bbb52cb  
2014-07-18T23:20:53.228+0800 [initandlisten] build info: Linux build12.nj1.10gen.cc 2.6.32-431.3.1.el6.x86_64 #1 SMP Fri Jan 3 21:39:27 UTC 2014 x86_64 BOOST_LIB_VERSION=1_49  
2014-07-18T23:20:53.228+0800 [initandlisten] allocator: tcmalloc  
2014-07-18T23:20:53.228+0800 [initandlisten] options: { net: { bindIp: "127.0.0.1", port: 27017 }, storage: { dbPath: "/var/lib/mongo" } }  
2014-07-18T23:20:53.304+0800 [initandlisten] journal dir=/var/lib/mongo/journal  
2014-07-18T23:20:53.304+0800 [initandlisten] recover : no journal files present, no recovery needed  
2014-07-18T23:20:53.374+0800 [initandlisten] waiting for connections on port 27017  
2014-07-18T23:20:57.838+0800 [initandlisten] connection accepted from 127.0.0.1:36712 #1 (1 connection now open)  
2014-07-18T23:21:15.077+0800 [initandlisten] connection accepted from 127.0.0.1:36713 #2 (2 connections now open)  
2014-07-18T23:21:52.342+0800 [conn2] getmore test.my_collection cursorid:34538199491 ntoreturn:0 keyUpdates:0 numYields:39 locks(micros) r:121572 nreturned:95052 reslen:4194299 202ms  
2014-07-18T23:21:53.376+0800 [clientcursormon] mem (MB) res:136 virt:12809  
2014-07-18T23:21:53.376+0800 [clientcursormon]  mapped (incl journal view):12508  
2014-07-18T23:21:53.376+0800 [clientcursormon]  connections:2  
2014-07-18T23:21:56.790+0800 [conn2] getmore test.my_collection cursorid:34538199491 ntoreturn:0 keyUpdates:0 numYields:88 locks(micros) r:142113 nreturned:95595 reslen:4194301 244ms  
Killed  

資料查詢指令碼:
[[email protected] data]# cat mongotestList.py  
import pymongo  
import time  
 
client = pymongo.MongoClient("localhost", 27017)  
db = client.test  
print db.name  
print db.my_collection  

for item in db.my_collection.find():  
    print item  

資料插入指令碼:
[[email protected] data]# cat mongotest2.py  
import pymongo  
import time  

client = pymongo.MongoClient("localhost", 27017)  
db = client.test  
print db.name  
print db.my_collection  

while True:  
    db.my_collection.save({time.ctime(): time.time()}) 


相關推薦

cgroup限制程序記憶體大小

宣告: 本部落格歡迎轉發,但請保留原作者資訊! 內容系本人學習、研究和總結,如有雷同,實屬榮幸! 以限制mongodb的記憶體大小為例。 Cgroup限制方法:   mkdir /cgroup/memory/test/ echo 50M > /cgrou

CGroup 限制CPU/記憶體等資源的使用

CGroup 介紹 CGroup 是 Control Groups 的縮寫,是 Linux 核心提供的一種可以限制、記錄、隔離程序組 (process groups) 所使用的物力資源 (如 cpu memory i/o 等等) 的機制。2007 年進入 Linux

使用cgroup限制某個程序對內存的使用

cgroup的使用線上的mongodb是復制集模式的。為了便於監控mongodb的慢查詢等狀態,在3臺機器上都部署了packetbeat,通過抓取27017端口的流量發送到ES集群。但是第二天發現zabbix告警,顯示某一臺機器A(從節點)上的mongod進程宕了。日誌顯示是OOM導致的。再一想到,我們每天的

[從0到1搭嵌入式工程]計算程序佔用的記憶體大小

指令碼內容:     # cat get_process_mem.sh      pid=$(ps|grep myprocess|grep -v grep|awk '{print $1}')     cat /proc/$pid/status|grep VmRSS|awk

讓Redis突破記憶體大小限制

Redis雖然可以實現持久化儲存,也是基於資料記憶體模型的基礎之上,單機記憶體大小限制著Redis儲存的資料量,有沒有一種替代方案呢?本文介紹一款筆者使用的採用New BSD License 許可協議的軟體——SSDB。 官網地址:http://ssdb.io/zh_cn

【筆記】ios 記憶體大小限制 (因佔用記憶體太大而crash)

因ios對每個程式都有最大的記憶體分配限制,如果超過了這個閾值,會被系統強制關閉,造成crash,通常出現在bugly上的錯誤碼是 SEGV_ACCERR。在除錯的時候,會顯示類似這樣的資訊   EXC_RESOURCE RESOURCE_TYPE_MEMORY (lim

如何有效調整HiveServer2程序的JVM堆記憶體大小

我的執行環境:JDK1.8, HIVE1.2 ,HADOOP2.7 HiveServer2在以下簡稱HS2 [[email protected]_hdp_01 bin]$ pwd ${HIVE_HOME}/bin [[email protec

Window7 32位系統破解電腦使用記憶體大小限制

Window7 32位系統只能使用3G多一點記憶體,然而自己的記憶體比較大,實在是一種浪費; 於是就網上找了一種方法,可以使用我的16G的記憶體,破解記憶體的限制;這樣就可以像64位系統一樣使用記憶體

linux 下應用程式設計程序記憶體資源的限制

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/resource.h> #include <errno.h> #include &l

使用cgroup限制記憶體使用

調研目標: 1、檢查memory cgroup管理的程序都設定為不可oom kill時,當出現oom,是否會造成程序或程序組阻塞。 2、若出現阻塞,是否可自恢復。 一、準備過程 0、執行lssubsys --all,檢查是否安裝了cgroup的元件;沒有安裝則 apt-

c#如何限制程式記憶體使用的大小

c#雖然內建垃圾回收機制,但是並不能解決程式佔用記憶體龐大的問題,如果我們仔細觀察工作管理員,我們會發現一個程式如果最小化的時候,它所佔用的會驟然減小,這時作業系統會把程式用不到的記憶體暫時放到虛擬記憶體中,當我們再把

Java記憶體大小限制

我們在執行Java程式時,特別是跑app server時,經常需要調大JVM的heap大小。通過-Xms256m -Xmx256m的引數形式區設定heap的大小,還有-XX:PermSize=256m -XX:MaxPermSize=256m的引數形式設定perm space

棧(stack)上申請記憶體大小限制問題

#include <iostream> using namespace std; long int count = 0; void stack() { char msg[1024]; //加上static可以測試靜態儲存區的記憶體 cout<

Cgroup限制CPU、IO、記憶體以及linux系統中的排程策略

一、CPU 1、0核利用 思路: 0核是必須要保護的,否則各種系統命令、喂狗都可能出問題;    &

js上傳文件(圖片)限制格式及大小為3M

max element 不能 jpg script 圖片大小 -s 打開 -1 本文保存為.html文件用瀏覽器打開即可測試功能 <form id="form1" name="form1" method="post" action="" enctype="m

利用cgroup限制instance磁盤io資源使用

loaded load 安裝 product 開啟 .com read net nag 1、安裝libcgroup軟件包;[root@pre-pool1-r6-06-08-18-01 ~]# yum install libcgroup Loaded plugins: pro

c語言獲得動態分配記憶體後的陣列記憶體大小

c語言獲得動態分配記憶體後的陣列記憶體大小 用一個函式 :_msize(); ★注意:該函式為Windows獨有★ int* s = (int*)malloc(sizeof(int));     int i;     for(i

shell指令碼限制日誌檔案大小和行數

背景: 專案server在後端持續執行,日誌檔案不斷變大,需及時進行清空。 解決方案:編輯sh指令碼,指定時間間隔輪詢;將超出限制的日誌檔案,先備份,再清空原日誌檔案內容。 清空日誌檔案內容的方法有:             1

Java中一維陣列和二維陣列儲存佔用記憶體大小問題

問題:在java中,一維陣列和二維陣列在資料量一樣的情況下,開闢的記憶體大小是怎樣的? 一、嘗試階段: 1、程式碼一: public class OneArrayMemory{ public static void main(String[] args){ int num1 = 1

Linux下檢視檔案和資料夾佔用記憶體大小、刪除日誌 命令

轉:https://www.cnblogs.com/lixuwu/p/5944062.html 閱讀目錄 1 Linux下檢視檔案和資料夾大小 2 刪除系統日誌等 3 實踐 場景:在sts中執行自動部署時候maven提示No space left on d