`

网络服务器与池

 
阅读更多
网络服务器:http://www.ibm.com/developerworks/cn/linux/l-cn-edntwk/

“线程池”或“连接池”。“线程池”旨在减少创建和销毁线程的频率,其维持一定合理数量的线程,并让空闲的线程重新承担新的执行任务。“连接池”维持连接的缓存池,尽量重用已有的连接、减少创建和关闭连接的频率。这两种技术都可以很好的降低系统开销,都被广泛应用很多大型系统,如 websphere、tomcat 和各种数据库等。

  池这种东西看起来似乎很高深,其实在服务器端一般也都这么用,不去细细想也就没察觉了.通过减少创建和销毁的频率而降低系统开销

select与epollhttp://blog.csdn.net/tfengmao/article/details/8549664
关于select, epoll虽然平时经常用,但也没怎么关注它的实现,说起来挺惭愧的

1. select的实的特点

Select 实现具有如下特点:

1)每次调用select系统调用,都需要从用户空间拷贝数据到内核空间;
2)对于每一个fd(用户可以传送一批fd)调用其对应的设备的poll函数,对于socket来说,就调用tcp_poll函数;并收集设备是否有事件发生;

3)轮询了所有fd后,若没有事件发生,该函数就挂起,直到通知有事件发生,或者超时。

对于3)中,若扫描所有fd后,没有事件发生,该调用线程会挂起,那在什么时候,由谁唤醒该线程呢?这里就需要仔细考察下poll函数了。Poll函数将会将调用的线程挂在设备的对待队列中,当设备有事件发生的时候,就会唤醒等待队列中的线程。这里,就会唤醒调用select系统调用的线程。

从上面可以看出,若用select来实现一个事件循环的话,每次循环都会将fd从用户空间复制到内核空间,并且轮询每一个fd对应的设备状态;这看起来确实不明智。



2. epoll实现的特点

从用户空间向内核空间拷贝数据,和轮询设备都是费时操作,对于fd量很多的情况下,select就明显吃力了。Epoll就在这时候诞生了,epoll的实现克服了select的在多fd情况下表现的缺陷;基本原则是采用空间换时间的策略。

1)Epoll将每一个fd所需的数据保存在内核,而不是每次系统调用都需要从用户空间复制数据到内核,只是在fd首次注册的时候复制到内核。这样内核需要空间存储fd所需的数据。

2)epoll摈弃轮询设备的做法,而是在监视的设备等待队列中添加一个等待项。

3)当设备就绪后,等待项中的回调函数会调用。该回调函数将设备事件负责到一个链表中,并且唤醒调用epoll_wait的线程。

从epoll的实现来看,采用空间换时间的策略,去掉了重复从用户空间向内核空间复制数据的操作;采用回调机制,避免了轮询设备。从而epoll在大量fd的情况下,性能明显优于select。

分享到:
评论

相关推荐

    网络游戏-用于向服务器池中的网络服务器发送消息的方法和设备.zip

    标题和描述中提到的"用于向服务器池中的网络服务器发送消息的方法和设备"涉及到网络游戏架构、服务器通信协议、负载均衡以及高可用性等方面的知识点。下面将对这些关键点进行详细阐述。 1. **网络游戏架构**:网络...

    接口地址池dhcp服务器的配置

    在不同的网段中配置基于接口地址池的DHCP服务器,是确保每个网络区域都有独立且有序IP地址分配的关键步骤。下面我们将详细探讨这个主题。 首先,我们需要理解DHCP服务器的工作原理。DHCP服务器通过响应客户端的请求...

    网络服务器开发免费源码

    在IT领域,网络服务器开发是一项核心技能,尤其对于构建高性能、高并发的互联网应用至关重要。这份"网络服务器开发免费源码"提供了深入了解网络服务器工作原理的机会,是学习者宝贵的资源。下面将详细介绍其中可能...

    网络服务器配置设计报告

    网络服务器配置设计是计算机网络领域中的一个重要实践环节,它涉及到Web服务器、Email服务器和FTP服务器的搭建与管理。本实验旨在让学习者掌握这些基础服务的配置方法,以便理解网络服务的工作原理和实际应用。 一...

    2023年《网络建设与运维》国赛第三部分服务器搭建包括windows和linux两部分解答过程

    ### 2023年《网络建设与运维》国赛第三部分:服务器搭建与运维解析 #### 一、概述 2023年的《网络建设与运维》国赛第三部分聚焦于服务器搭建与运维,主要考察参赛者在X86架构及ARM64架构服务器上的操作系统安装与...

    网络服务器框架

    7. **性能优化**:高性能是网络服务器的重要考量,框架通常会包含各种优化策略,如缓存机制、连接池管理、负载均衡等,以提高服务器的响应速度和处理能力。 8. **安全性**:网络安全至关重要,框架通常提供了一些...

    J2EE网络服务器

    通常,J2EE网络服务器与应用服务器相结合,提供了一个环境来运行和管理基于Java的企业应用。 **网络服务器的功能:** 1. **HTTP服务**:网络服务器通过HTTP(超文本传输协议)与客户端进行通信,这是Web应用的基础...

    Windows网络服务器配置-配置存储池.ppt

    在Windows Server 2016中,网络服务器的配置与管理是系统管理员的重要任务之一,尤其是在存储管理方面。本节将详细讲解如何配置存储池,以及相关知识点。 首先,我们回顾一下磁盘管理的基础知识。磁盘分区是将物理...

    企业网络服务器规划与管理(1).doc

    "班 级 "13网络一 "学生姓名 "许富翔 "指导教师 "员志超 " " "班 " " " " " "设计(论文)题目 " 企业网络服务器的规划与管理 " "主要 "用户的需求 " "研究 "系统结构设计 " "内容 "系统的组成和安装 " " "企业网...

    计算机网络服务器配置.ppt

    计算机网络服务器配置是计算机网络中一个非常重要的组成部分,它涉及到计算机网络的基础结构,包括网络服务器的配置、DHCP服务器的配置与管理、DNS服务器的配置与管理、FTP服务器的配置等。本文档将详细介绍计算机...

    基于重写的muduo网络库,并可工作于nginx tcp负载均衡环境的集群聊天服务器,使用数据库连接池访问数据库.zip

    基于重写的muduo网络库,并可工作于nginx tcp负载均衡环境的集群聊天服务器,使用数据库连接池访问数据库 基于重写的muduo网络库,并可工作于nginx tcp负载均衡环境的集群聊天服务器,使用数据库连接池访问数据库 ...

    企业网络服务器规划与管理.doc

    "班 级 "13网络一 "学生姓名 "许富翔 "指导教师 "员志超 " " "班 " " " " " "设计(论文)题目 " 企业网络服务器的规划与管理 " "主要 "用户的需求 " "研究 "系统结构设计 " "内容 "系统的组成和安装 " " "企业网...

    这是一个可以自定义参数的使用Ssh2连接远程服务器的连接池

    Ssh2是PHP中用于实现SSH2协议的库,它允许开发者通过PHP代码与远程服务器进行交互,如执行命令、传输文件等。这个特定的连接池设计考虑到了可定制性,允许开发者根据实际需求调整连接参数。 自定义参数主要包括以下...

    企业网络服务器规划与管理..doc

    "班 级 "13网络一 "学生姓名 "许富翔 "指导教师 "员志超 " " "班 " " " " " "设计(论文)题目 " 企业网络服务器的规划与管理 " "主要 "用户的需求 " "研究 "系统结构设计 " "内容 "系统的组成和安装 " " "企业网...

    计算机网络常用服务器的安装与配置.doc

    4. 配置 DHCP 服务器池:打开“DHCP 服务器池”对话框,配置 DHCP 服务器池的设置。选择“自动分配 IP 地址”,然后输入 IP 地址范围。 FTP 服务器的安装和配置 FTP(File Transfer Protocol)服务器是计算机网络...

    后端必备+服务器网络编程指南

    在服务器网络编程中,可能需要关注的问题有:减少网络延迟、优化数据序列化与反序列化、缓存策略的实施等。通过有效的性能调优,可以显著提高服务的响应速度,降低资源消耗,提升用户体验。 “Java网络编程从入门到...

    Linux下高性能网络服务器的设计.pdf

    总结来说,设计高性能的Linux网络服务器需要综合运用多种技术手段,如线程池、内存池、AIO、缓存和消息队列,这些技术的结合使用能够有效地提高服务器处理能力,减少系统资源的消耗,应对大规模的网络访问压力。...

    企业网络服务器规划与管理(2).doc

    "班 级 "13网络一 "学生 "富翔 "指导教师 "员志超 " " "班 " " " " " "设计(论文)题目 " 企业网络服务器的规划与管理 " "主要 "用户的需求 " "研究 "系统结构设计 " "容 "系统的组成和安装 " " "企业网系统介绍 " ...

    企业级网络服务器的设计与实现.doc

    企业级网络服务器的设计与实现是一项复杂且至关重要的任务,它涉及到构建稳定、高效、安全的网络基础设施,以支持企业的日常运营和数据交换。本项目旨在设计并实施一套满足企业需求的网络服务器架构,确保服务的高...

Global site tag (gtag.js) - Google Analytics