高性能服务器程序研究与开发
文章平均质量分 83
快乐的霖霖
一个人默默的奋斗者
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
搭建一个后台服务器
搭建一个后台服务器参考来源:http://blog.youkuaiyun.com/column/details/yumeiz.html一. 需求 原题:时间同步系统开发需求需求场景:客户端向服务器发起登录请求,鉴权通过后(为了简化工作,所有登录请求,只要请求参数里的用户名和密码不为空,都鉴权通过),客户端再向服务器请求当前系统时间,服务器返回当前系转载 2013-05-29 21:18:36 · 4907 阅读 · 1 评论 -
服务器编程Actor机制
服务器编程Actor机制 一. 简介Erlang因为其优秀的并发特性而被大家所关注,而其并发特性的关键之一就是在于其采用了Actor模型,与Actor模型相对应的模型则是我们在面向对象编程中使用的Object模型,Object模型中宣扬,一切皆为Object(对象),而Actor模型则认为一切皆为Actor。Actor模型中,Actor之间通过消息相互通信,这是其和原创 2016-07-19 23:40:33 · 2820 阅读 · 0 评论 -
Nginx + FastCGI 程序(C/C++)搭建高性能web service的demo
Nginx + FastCGI 程序(C/C++)搭建高性能web service的Demo1.介绍 Nginx - 高性能web server,这个不用多说了,大家都知道。 FastCGI程序 - 常驻型CGI程序,它是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。原创 2015-01-12 17:57:59 · 1701 阅读 · 0 评论 -
Linux服务器系统内存监控方法详解
Linux服务器系统内存监控方法详解 内存是Linux内核所管理的最重要的资源之一。内存管理系统是操作系统中最为重要的部分,因为系统的物理内存总是少于系统所需要的内存数量。虚拟内存就是为了克服这个矛盾而采用的策略。系统的虚拟内存通过在各个进程之间共享内存而使系统看起来有多于实际内存的内存容量。Linux支持虚拟内存, 就是使用磁盘作为RAM的扩展,使可用内存相应地有效扩大原创 2013-09-30 17:31:07 · 1844 阅读 · 0 评论 -
在多线程应用程序中使用循环缓冲区高效地进行日志记录
在多线程应用程序中使用循环缓冲区高效地进行日志记录在关键的计算机应用程序的生存期中,日志记录是一件非常重要的活动,特别是当故障的症状并不十分明显时。日志记录提供了故障前应用程序状态的详细信息,如变量的值、函数的返回值等等。在一段时间的运行过程中,将不断地产生大量的跟踪数据,并持续地将其写入到磁盘上的文本文件中。要进行有效的日志记录,需要使用大量的磁盘空间,并且在多线程环原创 2013-08-28 15:15:13 · 2847 阅读 · 0 评论 -
单线程服务器和多线程服务器的常用编程模型
单线程服务器和多线程服务器的常用编程模型1. 单线程服务器编程模型 在高性能的网络程序中,使用最广泛的的要数"non-blocking IO+IO multiplexing"这种模型,即Reactor模式。2. 多线程服务器编程模型 大概有这么几种: 1. 每个请求创建一个线程,使用阻塞式IO操作。 2. 使用线程池,原创 2013-08-28 14:03:01 · 1788 阅读 · 0 评论 -
服务器压力测试程序
服务器压力测试程序 编写压力测试工具通常被认为是服务器开发的一个部分。压力测试工具模拟现实世界中高并发的客户请求,以测试服务器在高压下的稳定性。 压力测试程序有很多中实现方法,比如I/O复用方式,多线程,多进程并发编程方法,以及这些方式的结合使用。不过,单纯的I/O复用方式的施压程度是最高的,因为线程和进程的调度本身也是要占用一定CPU时间的。下面使原创 2013-08-27 20:23:54 · 3290 阅读 · 0 评论 -
最小堆定时器的实现
最小堆定时器的实现 上一篇博文实现了升序定时器链表,但是存在一个问题:添加定时器的效率偏低。后来产生了两种定时器实现方案:时间轮和时间堆。下面来实现最小堆定时器。 c++实现的最小堆定时器代码如下: #ifndef intIME_HEAP#define intIME_HEAP#include #include #include using s原创 2013-08-26 22:15:07 · 3960 阅读 · 0 评论 -
基于升序链表的定时器实现
基于升序链表的定时器实现 网络程序需要吃力的第三类事件时定时器事件,比如定期检测一个客户连接的活动状态。一般要将每个定时事件分别封装成定时器,并使用某种容器类数据结构,比如链表,排列链表和时间轮,将所有定时器串联起来,以实现对定时事件的统一管理。 下面实现一个简单的升序定时器链表。升序定时器链表将其中的定时器按照超时时间做升序排序。 代码如下:原创 2013-08-26 17:35:47 · 2622 阅读 · 0 评论 -
反向代理服务器的工作原理
反向代理服务器的工作原理 由于反向代理服务器在服务器集群中应用比较广,所以这里介绍下反向代理服务器的工作原理。 一 概述 反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给Intern原创 2013-05-29 15:08:00 · 1129 阅读 · 0 评论 -
多线程编程中的条件变量和虚假唤醒(spurious wakeup)
多线程编程中的条件变量和虚假唤醒(spurious wakeup)1. 概述 条件变量(condition variable)是利用共享的变量进行线程之间同步的一种机制。典型的场景包括生产者-消费者模型,线程池实现等。 对条件变量的使用包括两个动作: 1) 线程等待某个条件, 条件为真则继续执行,条件为假则将自己挂起(避免busy wait,节省CPU资源); 2) 线原创 2013-06-13 20:20:10 · 1734 阅读 · 0 评论 -
高性能多线程程序中的false sharing和CPU cache效应
高性能多线程程序中的false sharing和CPU cache效应1. false sharing在多核快速发展的现在,利用多线程技术提高CPU设备的利用率已经成为一种趋势。然而多核计算机体系架构和单核有了很大的变化,在多线程编程中会碰到一些意想不到的问题,比如多核中非常典型的false sharing问题。下文会非常详细的揭示false sharing产生的根源,以及原创 2013-08-24 19:07:15 · 3069 阅读 · 0 评论 -
多线程中递归锁的实现
多线程中递归锁的实现在上一篇文章中,我已经阐述了多线程中简单锁的实现,可在结束的时候,我就提了那么一个问题,那就是如果在一个链表中进行插入时,要进行查询的操作,如果只是简单的锁,是没法实现的。所以“递归锁”就浮现于世了。可能有些人看到递归这两个字,有点傻了眼,其实也没什么的,简单的介绍,就是进行简单的计数而已。刚开始引用锁的时候,就产生它,当在锁没有解开的时候,还要继续用锁,就简单转载 2013-08-24 18:27:47 · 1504 阅读 · 0 评论 -
多线程中锁的实现
多线程中递归锁的实现所谓"锁",就是为了让自己独自占有空间,在自己没用完之前,不让别人来占用自己的资源.现在的操作系统,无论是WINDOWS,还是UNIX等其他操作系统.都采用多线程的环境.这极大提高了任务的执行速度,而且不会影响其他事务的执行.但是它们的执行是靠时间片的轮转的,如果某一个线程没有执行完,可它的时间片用完了,就会被挂起来,直到轮到它的下个时间片.假如继续让它们这转载 2013-08-24 18:16:05 · 1274 阅读 · 0 评论 -
squid,nginx,lighttpd反向代理的区别
squid,nginx,lighttpd反向代理的区别 反向代理从传输上分为2种: 1. 同步模式(apache和squid). 2. 异步模式(lighttpd和nginx). 下面就来讲解下传统的代理(apache/squid)的同步传输和lighttpd,nginx的异步传输的差异。 如上图所示:原创 2013-07-12 10:24:37 · 1411 阅读 · 0 评论 -
高性能IO设计的Reactor和Proactor模式
高性能IO设计的Reactor和Proactor模式 在高性能的I/O设计中,有两个比较著名的模式Reactor和Proactor模式,其中Reactor模式用于同步I/O,而Proactor运用于异步I/O操作。 在比较这两个模式之前,我们首先的搞明白几个概念,什么是阻塞和非阻塞,什么是同步和异步,同步和异步是针对应用程序和内核的交互而转载 2013-07-08 19:37:40 · 1090 阅读 · 0 评论 -
基于SEDA的异步框架设计与实现
基于SEDA的异步框架设计与实现 目前,面对并发环境,主流互联网服务器编程模型有两种:多线程模型以及事件驱动模型。但是这两个模型都不足以解决这个问题。我们来首先看一下这两种编程模型。 1、多线程并发模型 多线程并发模型是目前最普遍的服务器编程模型,该模型的架构如下图所示: 该模型针对每一个请求,会为其创转载 2017-08-23 16:15:57 · 671 阅读 · 0 评论
分享