1. 程式人生 > >linux修改POSIX訊息佇列(msgqueue)的各項限制(最大記憶體、msg_max、msgsize_max、queues_max)

linux修改POSIX訊息佇列(msgqueue)的各項限制(最大記憶體、msg_max、msgsize_max、queues_max)

1.進入 目錄 /proc/sys/fs/mqueue/,檢視各項訊息佇列的預設max設定:

[[email protected] ~]# ls -l /proc/sys/fs/mqueue/
total 0
-rw-r--r-- 1 root root 0 Aug 20 23:04 msg_default
-rw-r--r-- 1 root root 0 Aug 20 23:04 msg_max
-rw-r--r-- 1 root root 0 Aug 20 23:04 msgsize_default
-rw-r--r-- 1 root root 0 Aug 20 23:04 msgsize_max
-rw-r--r-- 1 root root 0 Aug 20 23:04 queues_max
[
[email protected]
~]# cat /proc/sys/fs/mqueue/msg_max 10 [[email protected] ~]# cat /proc/sys/fs/mqueue/msgsize_max 8192 [[email protected] ~]# cat /proc/sys/fs/mqueue/queues_max 256

以修改msg_max為例:

[[email protected] ~]# echo "10000">/proc/sys/fs/mqueue/msg_max
[[email protected] ~]# cat  /proc/sys/fs/mqueue/msg_max
10000

上述可解決mq_open時,經常遇到的errno=22:/* Invalid argument */問題,其他修改型別。

2. 解除訊息佇列佔用記憶體81920的限制:

vim  /etc/security/limits.conf

新增:

*       soft    msgqueue        unlimited
*       hard    msgqueue        unlimited

上述各列用tab分開,儲存後系統重新啟動後生效。使用下面命令驗證:


[[email protected] ~]# ulimit -q
unlimited

附,/etc/security/limits.conf檔案的說明:

[[email protected] ~]# cat /etc/security/limits.conf
# /etc/security/limits.conf
#
#This file sets the resource limits for the users logged in via PAM.
#It does not affect resource limits of the system services.
#
#Also note that configuration files in /etc/security/limits.d directory,
#which are read in alphabetical order, override the settings in this
#file in case the domain is the same or more specific.
#That means for example that setting a limit for wildcard domain here
#can be overriden with a wildcard setting in a config file in the
#subdirectory, but a user specific setting here can be overriden only
#with a user specific setting in the subdirectory.
#
#Each line describes a limit for a user in the form:
#
#<domain>        <type>  <item>  <value>
#
#Where:
#<domain> can be:
#        - a user name
#        - a group name, with @group syntax
#        - the wildcard *, for default entry
#        - the wildcard %, can be also used with %group syntax,
#                 for maxlogin limit
#
#<type> can have the two values:
#        - "soft" for enforcing the soft limits
#        - "hard" for enforcing hard limits
#
#<item> can be one of the following:
#        - core - limits the core file size (KB)
#        - data - max data size (KB)
#        - fsize - maximum filesize (KB)
#        - memlock - max locked-in-memory address space (KB)
#        - nofile - max number of open file descriptors
#        - rss - max resident set size (KB)
#        - stack - max stack size (KB)
#        - cpu - max CPU time (MIN)
#        - nproc - max number of processes
#        - as - address space limit (KB)
#        - maxlogins - max number of logins for this user
#        - maxsyslogins - max number of logins on the system
#        - priority - the priority to run user process with
#        - locks - max number of file locks the user can hold
#        - sigpending - max number of pending signals
#        - msgqueue - max memory used by POSIX message queues (bytes)
#        - nice - max nice priority allowed to raise to values: [-20, 19]
#        - rtprio - max realtime priority
#
#<domain>      <type>  <item>         <value>
#

#*               soft    core            0
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#@student        -       maxlogins       4

相關推薦

linux修改POSIX訊息佇列msgqueue各項限制記憶體msg_maxmsgsize_maxqueues_max

1.進入 目錄 /proc/sys/fs/mqueue/,檢視各項訊息佇列的預設max設定: [[email protected] ~]# ls -l /proc/sys/fs/mqueue/ total 0 -rw-r--r-- 1 root root 0 Au

Linux程序間通訊(IPC)程式設計實踐十二Posix訊息佇列--基本API的使用

posix訊息佇列與system v訊息佇列的差別: (1)對posix訊息佇列的讀總是返回最高優先順序的最早訊息,對system v訊息佇列的讀則可以返回任意指定優先順序的訊息。 (2)當往一個空佇列放置一個訊息時,posix訊息佇列允許產生一個訊號或啟動一個執行緒,

細說linux IPCposix訊息佇列

本部落格專注於原創(或翻譯), 轉載本部落格文章請保留文章宣告,文章僅供學習與參考,未經允許情況下嚴禁用於商業用途!! 本部落格地址: blog.csdn.net/shallnet 或 blog.csdn.net/gentleliu email : liuy0711

程序間通訊筆記3POSIX訊息佇列

POSIX 訊息佇列 1.概述 訊息佇列可認為是一個訊息連結串列,頭訊息指定當前佇列的兩個屬性:佇列中允許的最大訊息數和每個訊息的最大大小。而每個訊息本身除了資料之外還包括優先順序和資料長度等內容。 1.1POSIX訊息佇列和SystemV訊息佇列的區

UNP卷2:程序間通訊—— 第5章:Posix訊息佇列

Posix訊息佇列 和 System V 訊息佇列的主要差別: 對POSIX訊息佇列的讀總是返回最高優先順序的最早訊息,對System V訊息佇列的讀則可以返回任意指定優先順序的訊息。當往一個空佇列放置一個訊息時,Posix訊息佇列允許產生一個訊號或啟動一個執行緒,Sys

linux c程式設計:Posix訊息佇列

 Posix訊息佇列可以認為是一個訊息連結串列. 有足夠寫許可權的執行緒可以往佇列中放置訊息, 有足夠讀許可權的執行緒可以從佇列中取走訊息 在某個程序往一個佇列寫入訊息前, 並不需要另外某個程序在該佇列上等待訊息的到達. 這跟管道和FIFO是相反的, 因為

阿里雲訊息佇列MQTT踩坑之路阿里雲MQTT Android客戶端

最近需求需要實現收款語音的播報,如果不考慮費用問題,使用推送與百度AL開發平臺的語音合成功能就可也實現收款語音的播報功能,但是考慮到費用問題,同時還考慮到ios與Android可以同步使用的問題(ps:ios如果使用推送需要把應用上架到蘋果商店,需要有證書,而且還需要通過稽核

Linux程序間通訊之POSIX訊息佇列

訊息佇列可認為是一個訊息連結串列,它允許程序之間以訊息的形式交換資料。有足夠寫許可權的程序或執行緒可往佇列中放置訊息,有足夠讀許可權的程序或執行緒可從佇列中取走訊息。每個訊息都是一個記錄,它由傳送者賦予一個優先順序。與管道不同,管道是位元組流模型,沒有訊息邊界。

linux網路程式設計之POSIX訊息佇列

POSIX IPC名字限定: 必須以/打頭,並且後續不能有其它/ ,形如/somename 長度不能超過NAME_MAX 通過下面的命令將訊息佇列掛載到/dev/mqueue下,可通過cat/dev/mqueue/name檢視訊息佇列狀態 mount -t mqueue

如何將LinuxPOSIX標準的程式移植到windows端

由於專案需要,必須將Linux平臺以POSIX標準改編的Lua直譯器移植到windows平臺下,並且需要在Qt中被多執行緒呼叫。 之前走了很多彎路,這裡現將這些曲折描述下,不過這些方法對於Lua原始碼編譯移植到window平臺來說不失為一種更簡單的方法,不過筆者將Lua的原

Message訊息佇列中多個數據傳遞Bundle

MyHandler handler = new MyHandler(handlerThread.getLooper()); Message msg = handler.obtainMessage(); /** * 將Mes

Linux下的訊息佇列MsgQueue

server檔案執行時先收訊息再發訊息,但是server.c中建立了訊息佇列,所以先執行server client檔案執行時先發訊息再收訊息 執行結果:開啟兩個terminal分別進行 comm.h標頭檔案 1 #ifndef _COMM_H_ 2 #define

52.Linux/Unix 系統程式設計手冊(下) -- POSIX 訊息佇列

1.概述 fork() 子程序會接收其父程序的訊息佇列描述符的副本,並且這些描述符會引用同樣的開啟著的訊息佇列的描述。子程序不會 繼承其父程序的任何訊息通知註冊。 當一個程序執行了 exec() 或終止時,所有其開啟的訊息佇列描述符會被關閉。關閉訊息佇列描述符的結

linux程序通訊:使用posix訊息佇列mq進行執行緒或程序間的通訊

POSIX訊息佇列允許程序以訊息的形式交換資料。此API與System V訊息佇列(msgget(2),msgsnd(2),msgrcv(2)等)有明顯不同,但做的事情差不多。 在linux多執行緒程式設計中,如果兩個執行緒沒用共同的資料區,則需要使用訊息佇列從一個執行

Linux POSIX 訊息佇列

        程式執行時,服務程序阻塞於mq_receive,客戶程序每發一條訊息佇列,服務程序都會從mq_receive處返回,但不一定接收到的訊息就是客戶程序最近傳送的那一條訊息,因為客戶程序往訊息佇列中新增訊息時會按照優先順序來排序,如果客戶程序同時向訊息佇列新增多條訊息,服務程序還未來得及讀取,那麼

linux IPC之POSIX訊息佇列

1.POSIX概述         前面已經學習了LINUX程序通訊方式的程序和FIFO兩種方式,但是POSIX是與之前兩種不同的方式,主要區別呢,在於使用管道和FIFO的時候,在寫入管道之前,應該有一個程序已經做好了讀的準備,它呢是以無格式的位元組流的方式進行通訊的,如果

linux網路程式設計之POSIX 訊息佇列 和 系列函式

#include<stdio.h>#include<stdlib.h>#include<sys/ipc.h>#include<sys/msg.h>#include<sys/types.h>#include<unistd.h>#includ

Linux-程序通訊-訊息佇列/訊號燈/共享記憶體

訊息佇列     訊息佇列提供了程序間傳送資料塊的方法,每個資料塊都可以被認為是有一個型別,接受者接受的資料塊可以有不同的型別;我們可以通過傳送訊息來避免命名管道的同步和阻塞問題;訊息佇列與命名管道一樣,每個資料塊都有一個最大長度的限制;我們可以將每個資料塊當作是一

Linux程序通訊——訊息佇列

總結下別人比較好的博文+自己寫的一個栗子   1.ftok()    https://blog.csdn.net/u013485792/article/details/50764224      &

linux 程序通訊 訊息佇列

1) 2) 3)   4)傳送 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <sys/types