9 dongfuye

尚未进行身份认证

广泛涉猎各种技术,github.com/yedf

等级
TA的排名 14w+

单机千万并发连接实战(修订版)

c10k,c100k,c1000k等问题大家都已经司空见惯,那么10m(千万)并发连接呢?今天就来一起挑战一下。下面我们使用handy库自带的例子程序,来跑出一个单机千万并发连接的实例,先上操作步骤,后面解释。准备机器10m连接,大家的个人电脑肯定无法满足要求,如果不是在大公司任职,弄个实际的物理机对大家是个奢望。那么怎么办?我也面临同样问题。现在的云计算这么发达,还可以按...

2016-03-15 09:21:04

epoll LT/ET 深入剖析

epoll LT/ET 深入剖析EPOLL事件有两种模型:Level Triggered (LT) 水平触发.socket接收缓冲区不为空 有数据可读 读事件一直触发.socket发送缓冲区不满 可以继续写入数据 写事件一直触发符合思维习惯,epoll_wait返回的事件就是socket的状态Edge Triggered (ET) 边沿触发.socket的接...

2016-03-13 21:49:00

epoll LT/ET 深入剖析

LT的编程与poll/select接近,符合一直以来的习惯,不易出错ET的编程可以做到更加简洁,某些场景下更加高效,但另一方面容易遗漏事件,容易产生bug

2016-03-13 21:16:38

千万并发连接注意点

对于一台服务器来说,支撑千万并发连接是一个挑战,我们来看看有哪些限制,并且如何解决首先是内存问题,默认设置下,系统为每个tcp连接分配4k的rmem和4k的wmem,那么一个连接需要8k的内存,1kw连接需要80G内存。 修改系统的这两个配置,改为1k的rmem和wmem,则需要的内存为20G,实际使用中还会有其他的内存开销,因此最好准备32G或更大的内存 sysctl -w net.ipv4.

2015-08-26 11:57:55

单机千万并发连接实战

c10k,c100k,c1000k等问题大家都已经司空见惯,那么10m(千万)并发连接呢?今天就来一起挑战一下吧。准备机器  10m连接,大家的个人电脑肯定无法满足要求,如果不是在大公司任职,弄个实际的物理机对大家是个奢望。那么怎么办?我也面临同样问题。   现在的云计算这么发达,还可以按小时计费,一小时的费用也就几元,那就试试云计算产品吧。小编先是在阿里云上测试,但阿里云的按需付费主机配置不高,

2015-08-26 11:43:36

半同步半异步高性能网络编程

网络编程的模式分为3种:1. nginx的全异步方式,使用epoll处理网络数据,对于请求的处理也完全是异步的。任何一个请求的处理如果花费了较长时间,那么nginx进程就会被处理操作阻塞,导致无法处理IO事件2. 简单的一个连接一个线程方案,这种方案无法处理大量并发的连接,适用mysql这类连接数不多的场景。其中也有一些优化的做法,例如使用线程池避免不断的创建销毁线程。3. 半同步半异

2015-07-27 10:52:02

阿里云 oss python3 例子

阿里云的oss SDK又是不支持python3,头疼头疼。本想改一改它的SDK,让它支持python2+python3,无奈里面大量的代码使用不带括号的print,工作量恐怖。幸好oss的使用非常简单,我翻了翻相关文档,弄了个简单可运行的例子(python2, python3都支持),主要的代码如下:aliyun-oss-python3请注意,需要填写自己的accessKeyId等相关信息

2015-07-22 16:02:11

kqueue示例

网络服务器通常都使用epoll进行异步IO处理,而开发者通常使用mac,为了方便开发,我把自己的handy库移植到了mac平台上。移植过程中,网上居然没有搜到kqueue的使用例子,让我惊讶不已。为了让大家不用像我一样再次花费大力气搞定kqueue,我整理了一个简单清晰可运行的kqueue例子,供大家参考。 kqueue一共有几个函数:int kqueue(void); //类似epoll_cr

2015-07-16 11:14:59

pip打包例子

使用pip把相关类库打包之后,就可以方便的使用pip工具进行一键安装。甚至可以把自己的包加入到官方pip服务器上,这样自己的服务器上面无需配置就可以直接命令安装。目录结构如下|-mypackage| |-file1|-setup.pysetup.py的内容如下:from setuptools import setup,find_packagessetup(   

2015-07-14 11:37:04

非阻塞/异步(epoll) openssl

前段时间在自己的异步网络框架handy中添加openssl的支持,当时在网络上搜索了半天也没有找到很好的例子,后来自己慢慢的摸索,耗费不少时间,终于搞定。因此把相关的资料整理一下,并给出简单的例子,让后学者可以少费些力气。同步的openssl调用网上已经有许多的例子,这里就不再详细介绍,大家也可以直接读源代码:同步客户端:https://github.com/yedf/openss

2015-07-09 17:00:25

leveldb性能调优

许多的nosql都使用leveldb或者类似leveldb的系统作为存储引擎,例如tair,hbase,canssandra,因此理解并调优存储引擎可以大大的提高系统的性能。前一篇大致介绍了原理,这一篇接下来讲解调优相关的内容。leveldb中的写放大一条记录写到leveldb,则会写一次到log,写一次到level 0,随着后面更多数据的写入,level n里

2015-07-09 15:57:39

leveldb为什么这么快

nosql数据库大多采用leveldb或者类似leveldb的存储引擎,我们来看看它为什么能够这么快。levelDB则采用了一种全新的数据结构,叫做log structured merge tree(LSMT)

2015-07-09 14:23:48

10行代码编写一个c++服务器

Handy是一个简洁优雅的C++11网络库,适用于linux与Mac平台。十行代码即可完成一个完整的网络服务器。下面是echo服务器的代码:#include >using namespace std;using namespace handy;int main(int argc, const char* argv[]) { EventBase bases; //事件

2015-07-07 10:29:25

epoll示例

epoll示例linux下的非阻塞网络编程必定离不开epoll。epoll的使用一共有三个函数:int epoll_create(int size);函数产生一个epoll句柄,其中size参数在linux内核2.6.8会被忽略,但一定要大约0。int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);epoll的事件注册函

2015-07-05 18:42:31

阿里云 RDS SDK python3支持

最近的一个项目需要操作阿里云的RDS,项目使用python3,让人惊讶的是官方的SDK竟然只支持python2在阿里云现有SDK上改了改,文件的修改只涉及aliyun/api/base.py,详见https://github.com/yedf/aliyun-python修改后的代码在python2.7.6以及python3.4.3上面测试通过主要的修改如下:1. p

2015-07-04 11:23:06

mako模板调试与使用技巧

django默认的模板太不灵活,想把一个数字0.15显示成15%都得费不少劲,太不爽!!!网上查阅了几个模板系统,有Jinja2等等,最后发现mako能够直接支持python的语句,最为灵活,果断选用。使用过程中碰见的问题不少,记录如下:1. 调试技巧:如果在mako的模板显示过程中出现问题,django的错误提示就一个字,“错”,剩下的,慢慢查吧,然后我挨个删除,挨个尝试

2015-07-04 11:19:43

C++ 高性能无锁日志系统

这里的日志系统指的是程序日志,用于记录程序运行中

2014-08-02 16:23:16

vmware 虚拟机 configure 错误解决办法

最近在wmware虚拟机上面工作,

2014-07-14 10:18:03
勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!