1. 程式人生 > >zabbix_agentd啟動時IPC和共享記憶體段問題

zabbix_agentd啟動時IPC和共享記憶體段問題

問題1:

zabbix_agentd [16428]: cannot recreate Zabbix semaphores for IPC key 0x7a026869 Semaphore ID 4294967295: [22] Invalid argument

檢視KEY為0x7a026869的訊號佇列:

[[email protected] zabbix]# ipcs 0x7a026869

--------- 訊息佇列 -----------

鍵 msqid 擁有者 許可權 已用位元組數 訊息

------------ 共享記憶體段 --------------

鍵 shmid 擁有者 許可權 位元組 nattch 狀態

0x6c026869 98304 admin 600 657056 6

--------- 訊號量陣列 -----------

鍵 semid 擁有者 許可權 nsems

0x7a026869 196608 admin 600 13

原因:

我這裡zabbix_agentd啟動的時候配置的屬主屬組是zabbix,而之前估計是啟動的時候用了admin身份,導致這裡的訊號量陣列和共享記憶體段的屬主都是admin,可能是因為某種原因非正常關閉了zabbix_agentd,導致這裡的內容沒有關閉,但是每個程序啟動的時候其key值是固定的,所以當我修改了zabbix_agentd啟動屬主屬組的時候,它沒有許可權刪除和重新建立訊號量陣列,從而出現了無法啟動的問題;

解決辦法(兩種方法都已驗證):

方法1:刪除訊號量陣列

ipcrm -S 0x7a026869

然後啟動zabbix agentd就可以了。

方法2:直接修改zabbix_agentd的啟動屬主為admin即可正常啟動。

下圖為zabbix_agentd以zabbix屬主身份啟動之後檢視相關訊號佇列和共享記憶體段的資訊:

[[email protected] admin]# ipcs 0x7a026869

--------- 訊息佇列 -----------

鍵 msqid 擁有者 許可權 已用位元組數 訊息

------------ 共享記憶體段 --------------

鍵 shmid 擁有者 許可權 位元組 nattch 狀態

0x6c026869 98304 zabbix 600 657056 6

--------- 訊號量陣列 -----------

鍵 semid 擁有者 許可權 nsems

0x7a026869 196608 zabbix 600 13

問題2:

zabbix_agentd [19609]: cannot attach to existing shared memory: [13] Permission denied

19609:20170714:101213.480 cannot allocate shared memory for collector

檢視共享記憶體段:

[[email protected] zabbix]# ipcs -m

------------ 共享記憶體段 --------------

鍵 shmid 擁有者 許可權 位元組 nattch 狀態

0x6c026869 0 admin 600 657056 0

[[email protected] zabbix]# ipcrm -m 0x6c026869

ipcrm: 解析引數失敗: '0x6c026869'

刪除共享記憶體(注意,這裡對共享記憶體段的操作要使用shmid值):

[[email protected] zabbix]# ipcrm -m 0

相關推薦

zabbix_agentd啟動IPC共享記憶體問題

問題1: zabbix_agentd [16428]: cannot recreate Zabbix semaphores for IPC key 0x7a026869 Semaphore ID 4294967295: [22] Invalid argument 檢視KE

IPC通訊之訊息佇列、訊號量共享記憶體

    有三種IPC我們稱作XSI IPC,即訊息佇列,訊號量以及共享儲存器。XSI IPC源自System V的IPC功能。由於XSI IPC不使用檔案系統的名稱空間,而是構造了它們自己的名字空間,

SpringMVC啟動載入資料到記憶體

@Component public class InitDataCache { public static List<String> list = new ArrayList<String>(); //註解是操作的關鍵 @PostConstruct pu

程序間通訊的訊息佇列共享記憶體方式的實現

共享記憶體方式使用QSharedMemory 和QSystemSemaphore兩個類實現 一個程序往共享記憶體空間中寫,一個程序往共享記憶體空間中讀 兩程序通訊時: 向共享記憶體中提供資料的一方: 1,定義QSharedMemory shareMemory,並設定標誌名shareMemory.setKey(

Linux程序間通訊之訊號量(semaphore)、訊息佇列(Message Queue)共享記憶體(Share Memory)

System V 程序通訊方式:訊號量(semaphore)、訊息佇列(Message Queue)和共享記憶體(Share Memory) 訊號量 訊號量(semaphore)實際是一個整數,它的值由多個程序進行測試(test)和設定(set)。就每個程序所關心的測試和

java中程序間通訊,基於檔案共享記憶體

附上編譯執行的原始碼: 1,請分別建立兩個工程來進行讀寫操作; 2,請在相應的目錄建立一個檔案例如:/home/tory/workspace/sharedMemory.txt 3,往檔案中輸入超過12個位元組資料:echo asldkjasldkddas > /hom

Linux釋放記憶體及手動釋放Oracle共享記憶體

free -m #echo 3 > /proc/sys/vm/drop_caches#cat /proc/sys/vm/drop_caches3 free -m 手動刪除Oracle共享記憶

在linux下檢視有哪些作業系統程序正在使用某一個共享記憶體

[[email protected] log]# ipcs -m ------ Shared Memory Segments -------- key shmid owner perms bytes nattch

將 Win32 C/C++ 應用程式遷移到 POWER 上的 Linux,第 1 部分: 程序、執行緒共享記憶體服務 (轉載)

特別是程序、執行緒和共享記憶體服務)到 POWER 上 Linux 的對映。本文可以幫助您確定哪種對映服務最適合您的需要。作者向您詳細介紹了他在移植 Win32 C/C++ 應用程式時遇到的 API 對映。概述有很多方式可以將 Win32 C/C++ 應用程式移植和遷移到 p

如何利用記憶體共享記憶體構建高速的程序間通訊模型

#include "messagequeue.h" #include BYTE* CMssageQueue::mpCurrAddr = nullptr; CMssageQueue::CMssageQueue() { miBegin = 0; miEnd = 0; miOffse

C語言程序通訊訊息佇列共享記憶體(5)

歡迎加入QQ:498903810 一起交流、討論知識,裡面有大佬,也有小白,天下碼農一家親,大家一起討論進步。 訊息佇列 訊息佇列:預設傳送端將資訊放在前一個資訊後面,接收訊息端可以指

Linux---程序間通訊IPC共享記憶體

程序間通訊(IPC):是指在不同程序之間傳播或交換資訊。 IPC的方式:通常有管道(無名管道、命名管道)、訊息佇列、訊號量、共享儲存、Socket、Streams等(Socket和Streams支援不同主機上的兩個程序IPC) 程序間通訊的目的: 1

Binder機制共享記憶體 native

匿名Binder: 即沒有向ServiceManager註冊的Binder。 Binder通訊並不絕對依賴ServiceManager,它只是一個域名解析器。可有可無,有更方便。 所以可以看到ContextImpl$ApplicationThread,Content

PostgreSQL在啟動如何分配共享快取

相信很多人知道 shared_buffers 這個引數,它設定共享快取的大小,本篇簡單講一下它是怎樣分配的。 1、引數設定(sr

Linux 下 IPC 之 System V 共享記憶體的使用原理初探

前言 總結一下最近對於共享記憶體的學習, 可能比較淺顯或者有疏漏, 歡迎指正! 原理初探 我們知道, 程序空間相互隔離, 互相對立, 但是共享記憶體允許多個程序可以訪問同一塊記憶體來達到程序間通訊的目的. 共享記憶體是最高效的 IPC 機制, 它不涉及任何程

Appium——解決每次啟動都安裝settingunlock app方法

module 分享圖片 images 安裝目錄 devices 重啟 lib png nod 找到appium安裝目錄 C:\Program Files (x86)\Appium\node_modules\appium\lib\devices\android 修改代碼,註

優化pxe網啟動tftp的傳輸速度 --- 針對pxelinuxbootmgr

mdi 兼容 enum linux環境 efi 標識 作用 區別 同學 作為一名IT人士,一般的計算機維護當然不好意思找別人。 於是自己用pxelinux搭了個網絡啟動環境,可以啟動各種WinPE,以供折騰電腦系統,刷新固件的需要。 只是一般的網絡啟動都是基

檔案記憶體對映mmap解決大檔案快速讀寫問題程序間共享記憶體

mmap函式主要用途有三個: 1、將一個普通檔案對映到記憶體中,通常在需要對檔案進行頻繁讀寫時使用,這樣用記憶體讀寫取代I/O讀寫,以獲得較高的效能; 2、將特殊檔案進行匿名記憶體對映,可以為關聯程序提供共享記憶體空間; 3、為無關聯的程序提供共享記憶體空間,一般也是將一個普通檔案對映到

修改容器預設啟動的網路/指定網橋的方式

背景:辦公終端的地址是172.17開頭,容器預設啟動的地址也是172.17網段。那麼在伺服器上啟動容器之後,辦公終端就因為路由問題無法訪問伺服器,因此需要調整容器啟動的預設網段 網上查閱方法是刪除預設網橋,手動重建新網橋並指定網段,並修改配置檔案,如: https://www.cnb

程序間通訊——共享記憶體(Shared Memory)簡易原理建立_獲得函式

共享記憶體是System V版本的最後一個程序間通訊方式。共享記憶體,顧名思義就是允許兩個不相關的程序訪問同一個邏輯記憶體,共享記憶體是兩個正在執行的程序之間共享和傳遞資料的一種非常有效的方式。不同程序之間共享的記憶體通常為同一段實體記憶體。程序可以將同一段實體記憶體連線到他們自己的地址空間中,所有