- 博客(19)
- 收藏
- 关注
原创 ICE 超过最大连接数崩溃的问题
最近做ice服务器的压力测试,发现ICE在文件描述符用尽的情况下会崩溃,查看源码发现时connectionFactory中的一段代码:// // Now accept a new connection. // TransceiverPtr transceiver; try { transceiver = _acceptor->accept(); } catch
2016-04-02 22:02:31
3302
原创 Libevent源码分析(七)--- IOCP
IOCP模型关于iocp模型,网上有很多资料,这里不详细分析,下面这篇文章写的就非常详细: 完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三
2016-04-02 20:00:02
3818
原创 Libevent源码分析(六)--- bufferevent
上一节说过,libevent提供六中bufferevent类型,后面会详细分析其中的两个,bufferevent_sock和bufferevent_async,后者是采用iocp实现的。每一个bufferevent包含两个evbuffer作为读写缓存。下面是bufferevent的详细定义:struct bufferevent { /** Event base for which th
2016-04-01 11:48:23
2551
原创 Libevent源码分析(五)--- evbuffer的基本操作
之前几节分析了libevent底层的结构和运行机制,接下来的几节将会分析Bufferevents,Bufferevents在event的基础上加入了数据缓存逻辑,使得事件和数据结合在一起。libevent的bufferevent有六种类型,分别是:bufferevent_async,bufferevent_filter,bufferevent_openssl,bufferevent_pair,bu
2016-03-29 16:25:58
2283
原创 Libevent源码分析(四)--- libevent事件机制
之前几个章节都是分析libevent的辅助功能,这一节将要详细分析libevent处理事件的流程和机制,在分析之前先看一下libevent的使用方法,本文也将以libevent的使用方式入手来分析libevent的工作机制。void cb_func(evutil_socket_t fd, short what, void *arg){ const char *data = arg;
2016-03-18 20:22:43
1696
原创 Libevent源码分析(三)--- IO多路复用模型
eventop和zeromq一样,libevevnt支持多种 I/O多路复用技术比如epoll、poll、dev/poll、select 和kqueue 等 ,为了统一封装这些模型,libevent定义了eventop结构体:/** Structure to define the backend of a given event_base. */struct eventop {
2016-03-17 12:17:06
1450
原创 Libevent源码分析(二)--- 时间管理
时间获取libevent使用两种方式获取时间,首选是通过clock_gettime的CLOCK_MONOTONIC参数获取绝对时间,这个时间是递增的,不受系统时间影响,比较准确。其次是使用gettimeofday或者_ftime,这两种方式都是获取系统时间,下面是相关代码:static intgettime(struct event_base *base, struct timeval *tp)
2016-03-14 11:10:55
920
原创 Libevent源码分析(一)--- 基本数据结构
event结构体libevent是一个基于事件触发的网络库,它的特色之一是把I/O事件,定时器事件和信号量事件统一处理,对上层用户基本是透明的。在libevent内部这三种事件都用event结构体来表示,event是libevent中最基本的数据结构:struct event { TAILQ_ENTRY(event) ev_active_next; TAILQ_ENTRY(even
2016-03-12 14:04:45
3103
原创 Libevent源码分析(零)--- 前言
libevent是一个基于事件模型的网络库,它以高性能著称,使用也非常广泛,比如熟知的memcache就是使用libevent作为底层网络库的。笔者目前游戏服务器同样使用了libevent作为网关服务器和客户端交互的网络库,而服务器之间的通讯则使用了zeromq。libevent的介绍网上比较多,基本有以下几个特点:事件驱动,高性能 高性能是libevent最重要的特性,后
2016-03-10 14:43:24
755
原创 ZMQ源码分析(九)--其他socket_base模型
zmq除了上篇介绍的四种模型外还提供了很多其他有用的模型,下图说明了zmq提供的所有模型以及他们之间的使用关系: 下面是zmq的一些相关文章: http://rfc.zeromq.org/spec:24/ZMTP-PLAIN defines the ZMTP-PLAIN security mechanism. http://rfc.zeromq.org/spec:25/ZMTP-CURVE d
2016-02-19 19:08:54
1101
原创 ZMQ源码分析(八)--ROUTER-DEALER & REQ-REP
router & dealer 这对模型是zmq最重要的模型,由这对模型也衍生出一些其他模型,比如接下来要说到的req-rep模型。再分析router-dealer之前先看一下zmq的两个队列 : fq和 lb。前者是一个用于接收消息的fair queueing队列,后者是一个用于发送消息的load balance队列。两者都使用了一个array_t来作为自己的队列数据结构,array_t的实现比
2016-02-19 19:03:13
4727
原创 ZMQ源码分析(七) --进程内通讯
之前两节分析了zmq的tcp通讯流程,除了tcp之外,zmq还支持许多其他的通讯模式,比如inproc,ipc,pgm,epgm,tipc等。这一节接着分析inpro,即进程内通讯。和tcp通讯相比,进程内通讯要简单许多,因为不涉及到远程连接的认证以及数据的编码和解码,只是简单的在两个socket_base_t之间连接一个pipe,通过pipe在线程间传递数据即可。inproc通讯也两个套接字分别调
2016-01-29 19:29:21
3310
1
原创 ZMQ源码分析(六)--编码器和解码器
zmq的编码器和解码器负责和stream_engine合作收发网络数据,zmtp3.0使用v2_decoder和v2_encoder进行收发数据,本文也只对该版本进行分析。解码器
2016-01-28 17:17:59
1664
原创 ZMQ源码分析(五) --TCP通讯
zmq支持tcp,inpro,ipc,pgm,epgm,tipc等通讯方式。只要在address中指定地址格式即可透明支持对应的通讯方式。这里我们以最常用的tcp为例分析zmq数据在网络间传输的流程。
2016-01-28 11:21:38
6632
原创 ZMQ源码分析(四)--MSG
MSGmsg类是zmq中消息的定义类,tcp数据传送,进程间数据传送,进程内数据传送都是以msg为基本单位的。由于msg经常需要在对象之间传送,所以如何能尽量避免拷贝是msg需要解决的问题。 class msg_t{public: // Message flags. enum { more = 1, // Followed by mo
2016-01-24 01:08:05
1716
原创 ZMQ源码分析(三)--对象管理和消息机制
对象管理zmq的高效很大一部分原因是因为消息的传递采用无锁的操作,在分析zmq的消息机制之前先来看一下zmq的对象管理机制。在zmq中所有参与消息机制的对象都继承自object_t对象,该对象只有两个变量,一个ctx和一个tid,tid记录了mailbox在ctx中mailbox数组的索引,send_command方法可以通过tid找到对象对应的mailbox以便发送消息。另外object
2016-01-23 23:20:53
2678
原创 ZMQ源码分析(二)-- 网络&线程模型
网络&线程模型 zmq封装了select,poll,epoll,queue,kqueue等各个平台上基础的网络模型,但是在windows上没有封装IOCP模型,而是使用select,这对zmq在windows上会造成一些性能影响,毕竟select模型的性能相对较低。虽然这些模型的原理和操作都不相同,但是zmq封装了这些差异,抽象出统一的实现接口,下面我们以linux下的epoll模型为例进行分析,
2016-01-23 22:00:44
3049
转载 InnoDB performance optimization basics (redux)
InnoDB performance optimization basics (redux)September 20, 2013 by Muhammad Irfan 6 CommentsinShareI recently stumbled upon a post that Peter Zaitsev publish
2014-10-15 12:47:45
544
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人