Server Develop (五) Linux并发模型

简介:

目前可以实现并发程序的方法有Apache模型(Process Per Connection,简称PPC),TPCThread PerConnection)模型,以及select模型和poll模型、Epoll模型。

各种模型优缺点

  Apache模型和TPC模型是最容易理解的,Apache模型在并发上是通过多进程实现的,而TPC模型是通过多线程实现的,但是这种方式在大量进程/线程切换时会造成大量的开销。

  select模型是通过一种轮询机制来实现的。需要注意:

  • Socket数量限制:该模式可操作的Socket数由FD_SETSIZE决定,内核默认32*32=1024. 
  • 操作限制:通过遍历FD_SETSIZE(1024)个Socket来完成调度,不管哪个Socket是活跃的,都遍历一遍,这样效率就会呈现线性下降,把FD_SETSIZE改大的后果就是,"大家都慢慢来,什么?都超时了?".
  • 内核/用户空间的信息交换-> 内存拷贝

  poll模型与select类似,也是通过轮询来实现,但它与select模型的区别在于Socket数量没有限制。

  Epoll模型在poll模型的基础之上不使用轮询,而使用基于内核提供的反射模式。

  • 有“活跃Socket”时,内核访问该Socket的callback.
  • 内核/用户空间信息交换->通过共享内存

不同场景的应用情况

  目前用的比较多的就是Apache、Nginx、Lighttpd. Apache的占有率是最高是毋庸置疑的,但它主要是采用select模式开发。

  当前主流的异步web服务器Lighttpd和Nginx都是基于Epoll的。它们具有非常好的架构,可以运行在简单的web集群中。但在数据结构、内存管理都多个细节方面处理nginx考虑更加完善。nginx从event、跨平台、基础数据结构都很多细节方面进行了考虑和优化。nginx必定是未来的apache,未来的主流。

参考:

   http://bbs.linuxpk.com/thread-43628-1-1.html

     http://blog.csdn.net/sparkliang/article/details/4770655

   http://stblog.baidu-tech.com/?p=755

 

知识共享许可协议
本文 由 cococo点点 创作,采用 知识共享 署名-非商业性使用-相同方式共享 3.0 中国大陆 许可协议进行许可。欢迎转载,请注明出处:
转载自:cococo点点 http://www.cnblogs.com/coder2012

相关文章
|
IDE Linux 开发工具
如何在Linux运行RStudio Server并实现Web浏览器远程访问
如何在Linux运行RStudio Server并实现Web浏览器远程访问
771 0
|
9月前
|
安全 Linux iOS开发
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
373 0
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
|
存储 Linux
linux /www/server/cron内log文件占用空间过大,/www/server/cron是什么内容,/www/server/cron是否可以删除
linux /www/server/cron内log文件占用空间过大,/www/server/cron是什么内容,/www/server/cron是否可以删除
650 1
|
监控 Linux BI
【linux服务器系统盘爆满】/www/server/total/logs/目录内容过多导致服务器系统盘爆满,/www/server/total/logs/ 里是什么内容?是否可以删除?
【linux服务器系统盘爆满】/www/server/total/logs/目录内容过多导致服务器系统盘爆满,/www/server/total/logs/ 里是什么内容?是否可以删除?
333 1
|
Linux 网络安全
xmanager 4 连接SuSE linux server 11方法
xmanager 4 连接SuSE linux server 11方法
251 1
|
关系型数据库 MySQL Linux
Linux联网安装MySQL Server
Linux联网安装MySQL Server
237 0
|
弹性计算 负载均衡 网络协议
LVS (Linux Virtual server)集群介绍
LVS (Linux Virtual server)集群介绍
|
Oracle 关系型数据库 Linux
SuSE linux server 11通过SAP来安装oracle11g
SuSE linux server 11通过SAP来安装oracle11g
470 0
|
分布式计算 安全 网络协议
Linux【问题记录 04】SSH突然无法连接排查2个小时最终解决Failed to start OpenSSH server daemon及阿里云服务器的 kdevtmpfsi 挖矿病毒处理
Linux【问题记录 04】SSH突然无法连接排查2个小时最终解决Failed to start OpenSSH server daemon及阿里云服务器的 kdevtmpfsi 挖矿病毒处理
1256 0
|
关系型数据库 MySQL Linux
MySQL【部署 01】Linux root 用户部署 mysql-5.7.28 及 not allowed to connect to this MySQL server 和中文乱码问题处理
MySQL【部署 01】Linux root 用户部署 mysql-5.7.28 及 not allowed to connect to this MySQL server 和中文乱码问题处理
387 0