热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

OracleStudy之--IPCS管理共享内存

OracleStudy之--IPCS管理共享内存Unixlinux下的共享内存、信号量、队列信息管理在unixlinux下,经常有因为共享内存、信号量,队列等共享信息没有干净地清除而引起一些问题。查看共享信息的内存的命令是:ipcs[-m|-s|-q]。默认会列出共享内存、信号量

Oracle Study之--IPCS管理共享内存 U nix/linux下的共享内存、信号量、队列信息管理 在unix/linux下,经常有因为共享内存、信号量,队列等共享信息没有干净地清除而引起一些问题。 查看共享信息的内存的命令是:ipcs [-m|-s|-q]。 默认会列出共享内存、信号量

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

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@rh6 ~]# 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

wKiom1SqUtPQwytOAAJHLPBC0iA930.jpg



推荐阅读
  • 本文提供了在 Kali Linux 2020.01 x64 版本上安装 Docker 的详细步骤,包括环境准备、使用清华大学镜像源、配置 APT 仓库以及安装过程中的常见问题处理。 ... [详细]
  • 本文介绍如何在Linux系统中卸载预装的OpenJDK,安装指定版本的JDK 1.8,并配置防火墙以确保系统安全性和软件兼容性。 ... [详细]
  • 利用SSH隧道实现外网对局域网机器的安全访问
    本文探讨了一种常见的网络配置问题及其解决方案,即如何在外网环境下安全地访问位于局域网内的计算机。特别介绍了使用SSH反向隧道技术来实现这一目标的具体步骤和注意事项。 ... [详细]
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • LCUI 2.1.0 版本现已推出,这是一个用 C 语言编写的图形用户界面开发库,适合创建轻量级的桌面应用程序。此次更新包括多项修复和功能增强,并正式宣布将启动 Android 支持的开发计划。 ... [详细]
  • 解决CentOS 7.5中无法通过man命令查询C语言库函数的问题
    本文描述了在CentOS 7.5操作系统上,使用man命令查询C语言库函数时遇到的问题,并提供了详细的解决方案。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • 在安装Ubuntu 12.10并尝试安装VMware Tools时,遇到了一个常见的错误提示:指定的路径不是有效的3.5.0-17-generic内核头文件路径。本文将提供解决这一问题的具体步骤。 ... [详细]
  • 如何在Linux中实现字符设备控制
    本文详细探讨了在Linux环境下控制字符设备的方法,包括蜂鸣器和模数转换器(ADC)的实际操作案例。对于开发者来说,了解这些基础知识对于嵌入式系统的开发尤为重要。 ... [详细]
  • Linux中为何使用chmod 777设置最大文件权限
    在Linux系统管理中,设置文件权限是一个常见的操作。其中,chmod 777命令用于赋予文件所有者、组和其他用户完全控制权限。本文将探讨这一命令背后的原理及其应用。 ... [详细]
  • 本文详细探讨了Android系统中的内部存储路径,包括如何正确地使用这些路径进行文件操作,以及不同存储路径的特点和权限要求。 ... [详细]
  • 近期,考虑到在Vim内部进行GDB调试、运行Python脚本和数据库连接等多样化需求,思考是否可以通过集成终端来简化这些操作,而非逐一编写Vim脚本来实现。通过研究发现,确实存在一种高效的方法——利用特定插件实现终端功能的整合。 ... [详细]
  • iTOP4412开发板QtE5.7源码编译指南
    本文详细介绍了如何在iTOP4412开发板上编译QtE5.7源码,包括所需文件的位置、编译器设置、触摸库编译以及QtE5.7的完整编译流程。 ... [详细]
  • 全能终端工具推荐:高效、免费、易用
    介绍一款备受好评的全能型终端工具——MobaXterm,它不仅功能强大,而且完全免费,适合各类用户使用。 ... [详细]
author-avatar
十分风格的功夫_723
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有