服务器
嘎嘎嘎498451
这个作者很懒,什么都没留下…
展开
-
IOCP , kqueue , epoll ... 有多重要?【转】
IOCP , kqueue , epoll ... 有多重要?设计 mmo 服务器,我听过许多老生常谈,说起处理大量连接时, select 是多么低效。我们应该换用 iocp (windows), kqueue(freebsd), 或是 epoll(linux) 。的确,处理大量的连接的读写,select 是够低效的。因为 kernel 每次都要对 select 传入的一组 socke转载 2014-05-29 21:23:07 · 1029 阅读 · 0 评论 -
当C++遇到IOS应用开发---LRUCache缓存
http://blog.csdn.net/daizhj/article/details/8178807 本文着重介绍如何在XCODE中,通过C++开发在IOS环境下运行的缓存功能。算法基于LRU(最近最少使用)。有关lru详见: http://en.wikipedia.org/wiki/Page_replacement_algorithm#Least_recently_u转载 2015-08-11 10:29:53 · 532 阅读 · 0 评论 -
安装OpenResty
http://www.ttlsa.com/nginx/how-to-install-openresty/OpenResty,也被称为“ngx_openresty”,是一个基于Nginx的核心Web应用程序服务器,它包含了大量的第三方的Nginx模块和大部分系统依赖包。 OpenResty不是Nginx的分支,它只是一个软件包。主要有章亦春维护。为什么是OpenResty?转载 2015-08-26 22:22:14 · 567 阅读 · 0 评论 -
nginx启动、重启、关闭
http://www.cnblogs.com/jianxie/p/3990377.html一、启动 cd usr/local/nginx/sbin./nginx二、重启 更改配置重启nginx kill -HUP 主进程号或进程号文件路径或者使用cd /usr/local/nginx/sbin./nginx -s reloa转载 2015-08-26 23:08:43 · 600 阅读 · 0 评论 -
CentOS配置VSFTP服务器
http://www.cnblogs.com/lightnear/archive/2012/10/07/2713539.html[1] 安装VSFTP[root@localhost ~]# yum -y install vsftpd[2] 配置vsftpd.conf文件[root@localhost ~]# vi /etc/vsftpd/vsftpd.c转载 2015-08-26 21:42:00 · 348 阅读 · 0 评论 -
IOCP模型与EPOLL模型的比较 服务器优化
http://www.cnblogs.com/lancidie/archive/2013/05/02/3054063.html一:IOCP和Epoll之间的异同。异:1:IOCP是WINDOWS系统下使用。Epoll是Linux系统下使用。2:IOCP是IO操作完毕之后,通过Get函数获得一个完成的事件通知。Epoll是当你希望进行一个IO操作时,向Epoll查询是否可转载 2015-08-13 14:38:13 · 642 阅读 · 0 评论 -
九、缓冲IO的高级功能
http://blog.csdn.net/liuhongxiangm/article/details/16113671libevent的evbuffer实现了为向后面添加数据和从前面移除数据而优化的字节队列。evbuffer用于处理缓冲网络IO的“缓冲”部分。它不提供调度IO或者当IO就绪时触发IO的功能:这是bufferevent的工作。除非特别说明,本章转载 2015-08-17 10:09:21 · 1677 阅读 · 0 评论 -
创建 event_base
http://blog.csdn.net/liuhongxiangm/article/details/15813365三、创建 event_base目录(?)[+]使用libevent函数之前需要分配一个或者多个event_base结构体。每个event_base结构体持有一个事件集合,可以检测以确定哪个事件是激活的。如果设置ev转载 2015-08-17 10:11:54 · 547 阅读 · 0 评论 -
【Linux学习】epoll详解
http://blog.csdn.net/xiajun07061225/article/details/9250579什么是epollepoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linux kernel 2.转载 2015-08-17 12:15:33 · 406 阅读 · 0 评论 -
多线程优化思路(转载的)
样例程序程序功能:求从1一直到 APPLE_MAX_VALUE (100000000) 相加累计的和,并赋值给 apple 的a 和b ;求 orange 数据结构中的 a[i]+b[i ] 的和,循环 ORANGE_MAX_VALUE(1000000) 次。说明:由于样例程序是从实际应用中抽象出来的模型,所以本文不会进行 test.a=test.b= test.b+sum转载 2015-08-06 14:28:32 · 4283 阅读 · 0 评论 -
无锁队列的实现
http://coolshell.cn/articles/8239.html陈大师的文章,核心就是利用__sync_bool_compare_and_swap来尝试无锁操作,在组里的svr状态统计的代码看里看到类似用法。可以有效的避免用锁,但是感觉有死循环的风险,所以一般__sync_bool_compare_and_swap只尝试有限次数比较合适。对__syn转载 2015-08-06 14:06:52 · 729 阅读 · 0 评论 -
CAS原子操作实现无锁及性能分析
http://blog.csdn.net/chen19870707/article/details/41083183CAS原子操作实现无锁及性能分析 Author:Echo Chen(陈斌)Email:[email protected]:Blog.csdn.net/chen19870707Date:Nov 13转载 2015-08-07 13:23:07 · 683 阅读 · 0 评论 -
再说 c++11 内存模型
http://www.cnblogs.com/catch/p/4158495.html再说 c++11 内存模型可见性与乱序在说到内存模型相关的东西时,我们常常会说到两个名词:乱序与可见性,且两者经常交错着使用,容易给人错觉仿佛是两个不同的东西,其实不是这样,他们只是从不同的角度来描述一个事情,本质是相同的。比如说,我们有如下代码:atomicint> g_pa转载 2015-08-11 10:17:31 · 454 阅读 · 0 评论 -
C++11 并发指南六( <atomic> 类型详解二 std::atomic )
http://www.cnblogs.com/haippy/p/3301408.htmlC++11 并发指南六( 类型详解二 std::atomic )2013-09-05 22:32 by Haippy, 9364 阅读, 7 评论, 收藏, 编辑C++11 并发指南六(atomic 类型详解一 atomic_flag 介绍) 一文介绍了 C++11 中最简单转载 2015-08-11 10:20:41 · 4248 阅读 · 1 评论 -
原 深入了解tcmalloc(一):windows环境下无缝拦截技术初探
http://my.oschina.net/u/877348/blog/272066概述: 又到了一个总结提炼的阶段,这次想具体聊聊游戏引擎中使用的内存管理模块tcmalloc组件的使用心得。项目的前期曾经遇到过内存瓶颈,特别是windows系统下的客户端程序在经历长时间运行之后会出现内存占用率很高疑似泄漏的现象,排查了很久都没有找到原因,甚至一度无法定位问题出转载 2015-08-07 15:00:25 · 2682 阅读 · 0 评论 -
理解OAuth 2.0
OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为RFC 6749。一、应用场景为了理解OAuth的适用场合,让我举一个假设的例子。有一个"云冲印"的网站,可以将用户储存在Google的照片,冲印出来。用户为了使用转载 2015-04-14 21:01:31 · 910 阅读 · 0 评论 -
基于 skynet 的 MMO 服务器设计
最近,我们的合作方 陌陌 带了他们的一个 CP 到我们公司咨询一下 skynet 做 mmo 游戏项目中遇到的一些问题。因为他们即将上线一款 MMO ,在压力测试环节暴露了许多问题。虽然经过我们的分析,有很多问题出在他们的压力测试程序本身编写的 bug ,但同时也暴露出服务器的设计问题。核心问题是,他们在实现 mmo 服务器时,虽然使用了 skynet 框架,但却把所有的业务逻辑都放在了同一个转载 2015-05-27 18:00:24 · 3142 阅读 · 0 评论 -
AOI 服务的设计与实现
今天例会,梳理了工作计划后,发现要开始实现 AOI 模块了。所谓 AOI ( Area Of Interest ) ,大致有两个用途。一则是解决 NPC 的 AI 事件触发问题。游戏场景中有众多的 NPC ,比 PC 大致要多一个数量级。NPC 的 AI 触发条件往往是和其它 NPC 或 PC 距离接近。如果没有 AOI 模块,每个 NPC 都需要遍历场景中其它对象,判断与之距离。这个检索转载 2015-05-27 18:01:52 · 2257 阅读 · 0 评论 -
天龙八部服务器端共享内存的设计
一、服务器构架一个天龙八部游戏区,主要服务器部署情况如下图所示:实际部署可能有所不同。区角色数据库可以安装到Machine4,那么一个区有5台物理机器。LoginServer和WorldServer、CharacterDB、BillingServer有连接。WorldServer和各个GameServer有连接。ShareMemory和CharacterDB有连接。转载 2015-05-27 17:15:04 · 1268 阅读 · 0 评论 -
NAT穿透
对于UDP:一种是Cone NAT,简单说就是NAT每次分配给内网的端口是一样的,即使连接不同的主机,NAT上的端口还是不变(除非过期)。类似这样的NAT或防火墙,已经有比较可靠的解决方法:Peer-to-Peer (P2P) communication across middleboxes另外一种是Symmetric NAT,对于这种NAT,内网连接不同的其他主机,NAT分配转载 2015-05-27 09:48:51 · 1212 阅读 · 0 评论 -
浅谈过载保护
雪球:对于时延敏感的服务,当外部请求超过系统处理能力,如果系统没有做相应保护,可能导致历史累计的超时请求达到一定规模,像雪球一样形成恶性循环。由于系统处理的每个请求都因为超时而无效,系统对外呈现的服务能力为0,且这种情况下不能自动恢复。作者bison,腾讯后台开发技术总监。 过载保护,看似简单,但是要做好并不容易。这里用两个曾经经历的反面案例,给出过载保护的直观展现,并附上一点感转载 2015-05-27 14:34:49 · 728 阅读 · 0 评论 -
利用共享内存来恢复玩家数据
http://blog.csdn.net/evilswords/article/details/6184660听上去共享内存和游戏不太沾边,但在游戏服务器上利用共享内存这个技术已经不是一个新鲜的事了,畅游和像素早在天龙八部和寻仙就实现了这一应用(但不一定都像下面提到的这么用)。较早之前和同事讨论过如何在现有框架里利用共享内存这种进程间访问统一数据的特点,最理想的应用方案是切合目前以场景为单转载 2015-05-27 14:47:05 · 1636 阅读 · 0 评论 -
Libevent使用例子,从简单到复杂
转载请注明出处:http://blog.csdn.net/luotuo44/article/details/39670221 本文从简单到复杂,展示如何使用libevent。网上的许多例子都是只有服务器端的,本文里面客户端和服务器端都有,以飨读者。 关于libevent编程时的一些疑问可以阅读《libevent编程疑难解答》。假如转载 2015-06-01 17:58:47 · 954 阅读 · 0 评论 -
Libevent源码分析-----bufferevent工作流程探究
转载请注明出处:http://blog.csdn.net/luotuo44/article/details/39344743 和之前的《Libevent工作流程探究》一样,这里也是用一个例子来探究bufferevent的工作流程。具体的例子可以参考《Libevent使用例子,从简单到复杂》,这里就不列出了。其实要做的例子也就是bufferevent_s转载 2015-06-01 17:59:19 · 441 阅读 · 0 评论 -
多进程的游戏服务器设计
http://blog.codingnow.com/2006/10/multi_process_design.html目前,我们的游戏服务器组是按多进程的方式设计的。强调多进程,是想提另外一点,我们每个进程上是单线程的。所以,我们在设计中,系统的复杂点在于进程间如何交换数据;而不需要考虑线程间的数据锁问题。如果肆意的做进程间通讯,在进程数量不断增加后,会使系统混乱不可控。经过分析后,我转载 2015-05-27 15:04:12 · 821 阅读 · 0 评论 -
skynet任务调度分析
云风同学开源的skynet,当前规模是8K+ C代码和2K+ lua代码,实现了一个多线程高并发的在线游戏后台服务框架,提供定时器、并发调度、服务扩展框架、异步消息队列、命名服务等基础能力,支持lua脚本。单服务器支持10K+客户端接入和处理。 我个人比较关注高性能和并发调度这块,这两天分析了一下skynet的代码,简单总结一下。 1. 总体架构转载 2015-07-03 12:24:51 · 1518 阅读 · 0 评论 -
C++11实现自旋锁
http://blog.poxiao.me/p/spinlock-implementation-in-cpp11/自旋锁(Spinlock)自旋锁是一种用于保护多线程共享资源的锁,与一般的互斥锁(mutex)不同之处在于当自旋锁尝试获取锁的所有权时会以忙等待(busy waiting)的形式不断的循环检查锁是否可用。在多处理器环境中对持有锁时间较短的程序来说使用自旋锁代替一般的互斥锁往转载 2015-08-07 13:40:28 · 14514 阅读 · 0 评论