![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
服务器编程
Jackson_zhou
这个作者很懒,什么都没留下…
展开
-
轻松应对C10k问题
传统的、教科书里的I/O复用等待函数select/poll在处理数以万计的客户端连接时,往往出现效率低下甚至完全瘫痪,,这被称为C10K 问题。本文尝试着以一个最简单的单线程epoll程序为基础,轻松应对收发数据不频繁的过万客户端并发连接。并以此回顾C10K问题,介绍应对C10K问题的本质方法,线程模式的选择,介绍服务器编程流行的Reactor模式。 顺带介绍怎么应对socket句柄耗尽。原创 2013-12-08 19:18:00 · 1054 阅读 · 0 评论 -
Socket编程中常见的错误
(一) accept句柄耗尽:服务器每次accept一个链接之后,都会分配新的socket资源。Linux下对每个进程所能使用的文件句柄数是有限制的,默认是1024。扣除stdin,stdout,stderr,只有1021个句柄可用。一旦出现了accept的连接数超过了这个限制后就会很尴尬:accept返回-1,errno = 24,即EMFILE。如果采用Select、poll 或者epo原创 2013-12-11 12:50:51 · 3028 阅读 · 0 评论 -
线程的数量
在计算密集型的程序中,最佳线程数就是CPU的核数*个数。这是因为在SMP(对称多处理器)环境下,每个CPU都有一个可执行队列(run_queue)。如果一个进程处于TASK_RUNNING状态(可执行状态)则它会被加入到其中一个run_queue(且同一时刻仅会被加入到一个run_queue),以便让调度程序安排它在这个run_queue对应的CPU上面运行。一个进程一旦被安排在某个CPU上运原创 2013-12-17 22:12:02 · 623 阅读 · 0 评论 -
初见zookeeper
作为一个资深C++程序员, 第一次用java写zookeeper客户端程序, 我完全被震撼到了.用Eclipse创建Maven工程,规范性地填写你的代码组织(groupId),还有工程名称(artifactId). 很容易地创建了一个helloworld的java工程. 从maven仓库(https://mvnrepository.com/) 查找zookeeper的索引信息往pom.xml文件...原创 2019-03-19 18:50:59 · 132 阅读 · 0 评论