RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
OracleStudy之--IPCS管理共享内存-创新互联

Oracle Study之--IPCS管理共享内存

创新互联是专业的阳城网站建设公司,阳城接单;提供做网站、网站制作,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行阳城网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

Unix/linux下的共享内存、信号量、队列信息管理

在unix/linux下,经常有因为共享内存、信号量,队列等共享信息没有干净地清除而引起一些问题。

查看共享信息的内存的命令是:ipcs [-m|-s|-q]。

默认会列出共享内存、信号量,队列信息

-m列出共享内存

-s列出共享信号量

-q列出共享队列

清除命令是:ipcrm [-m|-s|-q] id。

-m删除共享内存

-s删除共享信号量

-q删除共享队列

案例分析:

[oracle@trade_as02 ~]$ ipcs -a ------ Shared Memory Segments -------- key        shmid      owner      perms      bytes      nattch     status      0x30024289 32768      futures   777        528384     1                        0xca2fd414 491521     oracle    640        1730150400 16                      ------ Semaphore Arrays -------- key        semid      owner      perms      nsems      0x00028009 0          futures   666        1          0x0002800c 32769      futures   666        1          0x30024003 262146     futures   777        3          0x3002428a 294915     futures   777        2          0x3002428b 327684     futures   777        2          0x3002428c 360453     futures   777        2          0x3002428d 393222     futures   777        2          0x3002428e 425991     futures   777        2          0x52dff7d0 3964936    oracle    640        151        0x52dff7d1 3997705    oracle    640        151        0x52dff7d2 4030474    oracle    640        151        0x52dff7d3 4063243    oracle    640        151        0x52dff7d4 4096012    oracle    640        151          ------ Message Queues -------- key        msqid      owner      perms      used-bytes   messages

    共享内存段有时不能马上删除,需使用这个内存段的所有进程向OS发送detach命令时才有释放,此时可以考虑删除进程使用的信号量,帮助释放共享内存段

相关知识:信号量、资源释放、ipcs、ipcrm

   信号量又称为信号灯,它是用来协调不同进程间的数据对象的,而最主要的应用是共享内存方式的进程间通信。本质上,信号量是一个计数器,它用来记录对某个资源(如共享内存)的存取状况;共享内存是运行在同一台机器上的进程间通信最快的方式,因为数据不需要在不同的进程间复制。通常由一个进程创建一块共享内存区,其余进程对这块内存区进行读写。在Linux系统下常用的方式是通过shmXXX函数族来实现利用共享内存进行存储的。如Shmget,类似于 malloc函数

ipcs可用来显示当前Linux系统中的共享内存段、信号量集、消息队列等的使用情况。

命令示例: ipcs -a或ipc 显示当前系统中共享内存段、信号量集、消息队列的使用情况; ipcs -m 显示共享内存段的使用情况; ipcs -s 显示信号量集的使用情况; ipcs -q 显示消息队列的使用情况;

ipcrm可用来删除对应的共享内存段、信号量、消息队列;

命令示例: ipcrm -s semid 删除对应的信号量集 ipcrm -m shmid 删除对应的共享内存段 ipcrm -q msqid 删除对应的消息队列 ipcrm本身只能实现单个资源的删除,利用以下命令可实现批量删除: 1.ipcs -s|grep 用户名|cut -d" " -f2|xargs -n1 ipcrm -s 2.ipcs -s|awk '/用户名/{print $2}'|xargs -n1 ipcrm -s 3.ipcs -s|awk '/用户名/{system("ipcrm -s "$2)}' 4.for i in echo `ipcs|grep 用户名|cut -d" " -f2`; do ipcrm -s $i; done

更深入的了解:

Oracle 内存段参数设定: [root@rh7 ~]# sysctl -p net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1 net.ipv4.tcp_syncookies = 1 error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key error: "net.bridge.bridge-nf-call-iptables" is an unknown key error: "net.bridge.bridge-nf-call-arptables" is an unknown key fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 2097152 kernel.shmmax = 536870912 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048586

 Oracle Study之--IPCS管理共享内存

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章标题:OracleStudy之--IPCS管理共享内存-创新互联
网站链接:http://lswzjz.com/article/ccosgd.html