system() 函式執行遇到 Cannot allocate memory
int iRet=system("ls -l");
if (0 != iRet)
{
PRERR("system(\"ls -l\") %s",strerror(errno));
}
執行結果:
ERR: system("ls -l") Cannot allocate memory File:../can/can.c, Line:186, Function:init_CanFrameData
分析:
1.
top命令:
Mem: 54580K used,
2540K free, 0K shrd, 0K buff, 20728K cached
CPU: 0.1% usr 1.3% sys 0.0% nic 98.4% idle 0.0% io 0.0% irq 0.0% sirq
Load average: 3.92 4.06 4.10 2/131 12094
PID PPID USER STAT VSZ %MEM CPU %CPU COMMAND
4282 2563 root R 2156 3.7 0 1.0 top
2.
[[email protected] comm]# cat /proc/meminfo
MemTotal: 57120 kB
MemFree: 2300 kB
Buffers: 0 kB
Cached: 20732 kB
SwapCached: 0 kB
Active: 23632 kB
Inactive: 15012 kB
Active(anon): 17928 kB
Inactive(anon): 32 kB
Active(file): 5704 kB
Inactive(file): 14980 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 17944 kB
Mapped: 8116 kB
Shmem: 48 kB
Slab: 5332 kB
SReclaimable: 2120 kB
SUnreclaim: 3212 kB
KernelStack: 1048 kB
PageTables: 960 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 28560 kB
Committed_AS: 554924 kB
VmallocTotal: 811008 kB
VmallocUsed: 4488 kB
VmallocChunk: 801788 kB
3.
[[email protected] comm]# cat /proc/sys/vm/overcommit_memory
0
該檔案指定了核心針對記憶體分配的策略,其值可以是0、1、2。
0,表示核心將檢查是否有足夠的可用記憶體供應用程序使用;如果有足夠的可用記憶體,記憶體申請允許;否則,記憶體申請失敗,並把錯誤返回給應用程序。
1,表示核心允許分配所有的實體記憶體,而不管當前的記憶體狀態如何。
2,表示核心允許分配超過所有實體記憶體和交換空間總和的記憶體(參照overcommit_ratio)。
結論:
可能是被fork的程序的虛擬地址空間佔用太多,同時你的overcommit引數設定為0,當虛擬地址空間佔用超過一定量(實體記憶體和swap計算)後,就會失敗.
優化一下程式的記憶體使用量或者overcommit_memory設定為其他值
相關推薦
system() 函式執行遇到 Cannot allocate memory
int iRet=system("ls -l"); if (0 != iRet) { PRERR("system(\"ls -l\") %s",strerror(errno)); }執行結果: ERR: system("ls -l") Cannot all
spark-submit 執行出現“Cannot allocate memory”錯誤
There is issufficient memory for the Java Runtime Environment to continue. Native memory allocation(malloc) failed to allocate xxx bytes
mxnet-model-server 執行出現 libjemalloc.so.2: cannot allocate memory in static TLS block
原因好像是jemalloc5.0與xxx不相容的bug,有人建議把jemalloc5.0降級到4.4.0,步驟如下:conda install -c conda-forge jemalloc==4.4.0還有人建議修改configure.ac,再編譯jemalloc原始碼,帖
執行Runtime.exec異常: error=12,Cannot allocate memory
Exception Trace: In the Linux circumstance, when the program executes till this place:Process p = Runtime.getRuntime().exec(cmdArr);it thr
centos Cannot allocate memory for the buffer pool
compress instr suse ocean crc ret imp 參數設置 git mysql 無法啟動 ,查看日誌: 17-10-01T15:37:27.401599Z 0 [Warning] TIMESTAMP with implicit DEFAULT v
composer proc_open(): fork failed – Cannot allocate memory
int ann open() for clas wap proc count -m 一般小的VPS 才1G內存,如果使用composer會提示內存不足的現象 解決辦法,可以使用交換內存 直接命令 /bin/dd if=/dev/zero of=/var/swap.1 bs=
解決Zend OPcache huge_code_pages: mmap(HUGETLB) failed: Cannot allocate memory報錯
lan share size led 功能 false opcache not als 前幾日看到鳥哥介紹的 《讓你的PHP7更快之Hugepage》, 於是想試試手給服務器加上,參照格式安裝好擴展,調整好配置文件,然後重啟php-fpm,結果啟動一直報Zend OPcac
pid max導致fork: Cannot allocate memory 的處理
ima oss 系統 bbf 海外 遊戲 控制臺 處理 not 海外一臺服務器淩晨就開始出現了不能登錄遊戲。早上運營人員告知上服務器查看了下。 一打命令就界面提示 -bash: fork: Cannot allocate memory 輸入了幾次top 出來了才出來了,一看
Cannot allocate memory /Resource temporarily unavailable 故障分析
前言: Linux 核心有個機制叫OOM killer(Out-Of-Memory killer),該機制會監控那些佔用記憶體過大,尤其是瞬間很快消耗大量記憶體的程序,為了防止記憶體耗盡而核心會把該程序殺掉。典型的情況是:某天一臺機器突然ssh遠端登入不了,但能ping通,說明不是網路的故障
nginx: [alert] mmap(MAP_ANON|MAP_SHARED, 1073741824) failed (12: Cannot allocate memory)問題
今天進行Nginx反向代理,用nginx -t測試配置檔案是否正常時出現如下錯誤: nginx: [alert] mmap(MAP_ANON|MAP_SHARED, 1073741824) failed (12: Cannot allocate memory) 記憶體對映無法完成,共享記憶體
cassandra os::commit_memory(0x00000000cc800000, 864026624, 0) failed; error='Cannot allocate memory'
本章是關於 cassandra 資料庫執行相關錯誤解決 1、錯誤: 日誌: [[email protected] conf]# tail -f /var/log/cassandra/cassandra.log OpenJDK 64-Bit Server VM warning:
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000fa980000, 59244544, 0) failed; error='Cannot allocate memory' (er
啟動專案報錯 Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000fa980000, 59244544, 0) failed; error='Cannot allocate memory' (errno=1
-bash: fork: Cannot allocate memory
今天遇到伺服器無法SSH,VNC操作命令提示fork:cannot allocate memory free檢視記憶體還有(注意,命令可能要多敲幾次才會出來) 檢視最大程序數 sysctl kernel.pid_max ps -eLf | wc -l檢視程
kafka 容器報記憶體不足異常(failed; error='Cannot allocate memory' (errno=12))
原路徑https://blog.csdn.net/womenrendeme/article/details/76855490 異常: OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c0000000, 1
啟動服務失敗,Java HotSpot(TM) 64-Bit Server VM warning: error='Cannot allocate memory' (errno=12)
反覆啟動(down了又起,沒起成功down了又起,反覆操作了三遍)應用服務(有多個netty服務端)的時候報這個錯誤: RealServer Start OK 2018-10-30 15:46:52 INFO:2018-10-30 15:46:52 Server beg
-bash: fork: Cannot allocate memory 問題的處理
今天遇到伺服器無法SSH,VNC操作命令提示fork:cannot allocate memory free檢視記憶體還有(注意,命令可能要多敲幾次才會出來) 檢視最大程序數 sysctl kernel.pid_max ps -eLf |
nginx 軟重啟報錯 mmap(MAP_ANON|MAP_SHARED, 524288000) failed (12: Cannot allocate memory)
解決辦法 將配置檔案的 http 的 proxy_cache_path 由500改為300 proxy_cache_path /usr/local/nginx/proxy_cache_path levels=1:2 keys_zone=cache_one: 300m inacti
Redis報錯Can't save in background: fork: Cannot allocate memory及類似問題的處理方法
問題的發現及解決過程: 1.Redis主從複製(一主一從)環境在客戶端用命令檢視主從狀態 在slave上輸入命令顯示如下: 在master上輸入命令顯示如下: 從顯示可以看出主從關係出現問題,然後檢視slave的redis.log有如下報錯: 以為是IP及埠問題,經檢查後發現
-bash: fork: Cannot allocate memory問題,程序數滿了的解決辦法
今天一大早來到公司就發現一臺遠端伺服器的程序滿了,無法連線上遠端伺服器,如下圖所示: 出現這種情況,主要是因為程序跑滿了,memory被消耗光了,無法為其他的操作,包括vnc操作命令和SSH連線分配記憶體,我們可以用兩個辦法: 1、init 6(重啟伺服器,注意,不是重啟tomcat)
滴滴雲伺服器安裝php的時候報錯virtual memory exhausted: Cannot allocate memory make: *** [ext/fileinfo/libmagic/ap
滴滴雲伺服器安裝php的時候,在make的時候報錯 virtual memory exhausted: Cannot allocate memory make: *** [ext/fileinfo/libmagic/apprentice.lo] Error 1 網上搜索的