linux下进程间通信IPC几种方式性能比较

在项目中,经常会遇到单机上进程间的通信,常用的进程间通信方式一般有以下几种

1 socket

2 unixsocket

3 共享内存(share-memory)

4 管道(pipe)

5 消息队列(message-queue)

6 文件(file)

7 消息总线(比如zeromq)

8 其他中间件(比如redis, memchache, 数据库等)

如果项目仅仅是消息的传递,对性能要求不高,则以上每种方式都可以实现进程间通信,我们可以选择较容易实现的方式来运用。

如果项目对消息传递性能要求很高,则我们可能会选用unixsocket,file,或者socket等, 具体哪种方式是最快的,性能最好的,则可能不太清楚。

所以,近日针对项目需要高性能的进程间通信需求,对几种通信方式的性能进行了比较,结论如下:

性能综合排序结果为(从好到差)

1 zmq  
2 file(no flush)
3 msgqueue  
4 unixsocket
5 pipe  
6 socket  
7 file(flush)
8 share-memory

测试方式为:把一定量的数据从服务器端发出,客户端进行接收,最后比较总耗时,并计算每秒能够处理的记录数。

具体的性能数据如下:

写:

时间: 2024-11-06 23:51:25

linux下进程间通信IPC几种方式性能比较的相关文章

Linux下定时执行任务的几种方式

如果说我说如果,你的某一个目录下会经常的生成一些垃圾文件,比如访问日志.错误日志.core文件,而你又不想过几分钟就去手动检查一下,那么可以使用定时执行任务的方式来解决.目前我所知道的可以执行定时任务的方式有这么几种:crontab.后台脚本定时检查. 下面对这几种方式进行一下讲解: 1.使用脚本 这个方式比较简单,就是写个脚本,每次开机的时候自动让它启动,然后放在后台去执行就可以了.脚本代码如下: $ cat cleanwitch.sh 1 #!/bin/bash 2 3 # which di

【操作系统之三】Linux下进程间通信-IPC(Inter-Process Communication)

管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信:信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身:linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够

linux下六大IPC机制【转】

转自http://blog.sina.com.cn/s/blog_587c016a0100nfeq.html linux下进程间通信IPC的几种主要手段简介: 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信:信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身:linux除了支持Un

Linux下MySQL的几种安装方式

闲来有空,整理下Linux下Mysql的几种安装方式,分别使用yum/rpm.常规方式编译安装.cmake方式编译安装以及使用二进制方式免编译安装MySQL Linux系统环境: CentOS release 6.5 (Final) x86_64 MySQL版本:5.5.45 安装前关闭了iptables.selinux为disabled 预安装以下包: yum groupinstall "debugging Tools" "Dial-up Networking Suppor

2017-2018-1 20155222 《信息安全系统设计基础》第10周 Linux下的IPC机制

2017-2018-1 20155222 <信息安全系统设计基础>第10周 Linux下的IPC机制 IPC机制 在linux下的多个进程间的通信机制叫做IPC(Inter-Process Communication),它是多个进程之间相互沟通的一种方法.在linux下有多种进程间通信的方法:半双工管道.命名管道.消息队列.信号.信号量.共享内存.内存映射文件,套接字等等.使用这些机制可以为linux下的网络服务器开发提供灵活而又坚固的框架. 以上内容引用自CSDN 共享内存 共享内存是在多个

android里TextView加下划线的几种方式

如果是在资源文件里: <resources> <string name="hello"><u>phone:0123456</u></string> <string name="app_name">MyLink</string> </resources> 如果是代码里: TextView textView = (TextView)findViewById(R.id.tv_t

linux下实现web数据同步的四种方式(性能比较)

实现web数据同步的四种方式 ======================================= 1.nfs实现web数据共享2.rsync +inotify实现web数据同步3.rsync+sersync更快更节约资源实现web数据同步4.unison+inotify实现web数据双向同步 ======================================= 一.nfs实现web数据共享 nfs能实现数据同步是通过NAS(网络附加存储),在服务器上共享一个文件,且服务器需

Linux进程间通信的几种方式总结--linux内核剖析(七)

进程间通信概述 进程通信的目的 传输数据 一个进程须要将它的数据发送给还有一个进程.发送的数据量在一个字节到几M字节之间 共享数据 多个进程想要操作共享数据,一个进程对共享数据 通知事 一个进程须要向还有一个或一组进程发送消息.通知它(它们)发生了某种事件(如进程终止时要通知父进程). 资源共享 多个进程之间共享相同的资源.为了作到这一点,须要内核提供锁和同步机制. 进程控制 有些进程希望全然控制还有一个进程的执行(如Debug进程),此时控制进程希望能够拦截还有一个进程的全部陷入和异常,并能够

[转] Linux下SVN的三种备份方式

(本文例子基于FreeBSD/Linux实现,windows环境请自己做出相应修改)   配置管理的一个重要使命是保证数据的安全性,防止服务器应硬盘损坏.误操作造成数据无法恢复的灾难性后果.因此制定一个完整的备份策略非常重要. 一般来说,备份策略应规定如下几部分内容:备份频度.备份方式.备份存放地点.备份责任人.灾难恢复检查措施及规定. 备份频度.存放地点等内容可以根据自己的实际情况自行制定:本文重点描述备份方式. svn备份一般采用三种方式:1)svnadmin dump 2)svnadmin