• 《构建高性能 Web站点》笔记


    书名:构建高性能Web站点

    出版社: 电子工业出版社

    ISBN:9787121170935

    一  绪论

    等待的时间:

    (1) 数据在网络上的传输时间

    (2) 站点服务器处理请求并生成回应数据的时间

    (3) 浏览器本地计算和渲染的时间

    二  数据的网络传输

    数据如何发送

    (1) 应用程序通过系统函数库接口(如send)向内核发出系统调用

    (2) 系统内核将数据从用户态内存区复制到由内核维护的内核缓冲区(这块地址空间的大小有限,需要发送的数据以队列的形式进入)

    (3) 内核通知网卡来取数据,网卡将数据复制到网卡缓冲区

    (4) 网卡缓冲区的数据完成从字节到位的转换,网卡通过特定的物理装置产生不同的电信号(铜线)或是光信号(光纤)

    三  服务器并发处理能力

    1  吞吐率

    单位时间内服务器处理请求数 单位:reqs/s

    2  apache ab 压力测试

    3  系统调用的减少对于降低请求处理时间有着不可忽视的作用

    4  内存分配

        Apache使用了基于内存池策略的内存管理方案,在运行开始便一次性申请大片内存作为内存池,随后需要的时候在内存池中直接获取,不需要再次分配

        Nginx使用多线程来处理请求,这使得多个线程之间可以共享内存资源,从而是内存总体使用量大大减少

    5  持久连接

        在一次TCP连接中持续发送多份数据而不断开连接,与其相反的是短连接,也就是建立连接后发送一份数据便断开,然后再次建立连接发送下一份数据。建立TCP连接的操作开销较大,所以连接次数越少,越有利于性能的提升。主流Web服务器都支持长连接,Apache中默认长连接是打开的,配置文件httpd.conf中 KeepAliveTimeout 5。浏览器和服务器各自超时时间不同,以最短时间为准。

    6  I/O模型

        I/O模型分为很多种类型,比如内存I/O,网络I/O,磁盘I/O,这里讲的是网络I/O。

        同步阻塞I/O:默认情况下socket都是阻塞的,进程调用某些涉及I/O操作的函数时,如:connect、accept、recv/recvfrom、send/sendto、closesocket,I/O操作完成后再继续运行

        同步非阻塞I/O:在socket选项中设置O_NONBLOCK可以实现非阻塞I/O,非阻塞I/O通过反复轮询来尝试数据是否就绪,防止进程被阻塞,最大的好处是可以在一个进程中同时处理多个I/O事件

        多路I/O就绪通知:可以同时处理多个connection,允许进程通过同一种方法同时监视所有文件描述符,并可以快速获得所有就绪的文件描述符。当数据就绪后,一般选择非阻塞方式。比如select和linux下的epoll

        异步I/O:主动请求数据后便可以继续处理其他任务,随后等待I/O操作完毕的通知

    四  动态内容缓存

    缓存的目的就是把需要话费昂贵开销的计算结果保存起来,这里指动态内容自行实现缓存机制。

    缓存和缓冲相似之处是都需要一块存储区,他们本质都于速度不一致有关,但缓存更加注重策略,也就是说缓存命中率。

    分析研究Smarty缓存。

    过期检查

    局部无缓存

    六  浏览器缓存

    Firefox 地址栏输入about:cache查看缓存,采用二进制文件的方式来存储和管理缓存文件

    缓存协商:浏览器向Web服务器请求内容,服务器告诉浏览器哪些可以缓存。下次请求这个内容时,询问服务器是否可以使用本地的缓存,服务器收到浏览器询问后需要做出果断回应,到底是允许浏览器使用本地缓存还是将最新内容传回浏览器

    七  Web服务器缓存

     涉及Apache的缓存技术,Apache提供两个扩展,分别是mod_disk_cache和mod_mem_cache,推荐用前者。

    八  反向代理缓存

    正向代理:客户端隐藏在代理服务器之后,代理端代理的是客户端。
    反向代理:Web服务器隐藏在代理服务器之后,客户端通过反向代理服务器来间接访问Web服务器。服务端知道客户端,客户端不知道服务端,通过代理端连接服务端。代理端代理的是服务端。向代理的一个目的是基于缓存的加速。

    用Nginx作为反向代理服务器,只需要设置proxy_pass指令即可,同时别忘打开mod_proxy模块

    十二  Web负载均衡

    HTTP重定向:当HTTP代理向Web服务器请求某个URL后,Web服务器可以通过HTTP响应头信息中的Location标记来饭后一个新的URL,这意味着HTTP大力需要继续请求这个新的URL,这便完成了自动跳转。HTTP重定向具备了请求转移和自动跳转的本领,所以可以用来实现负载均衡。

    DNS负载均衡:DNS服务器可以完成域名到IP地址的一对多的映射,通过这点来实现负载均衡

    反向代理负载均衡:核心是转发HTTP请求

    IP负载均衡:在HTTP层面一下实现负载均衡,这些负载均衡调度器的工作必须由Linux内核来完成,比如位于内核的Netfilter和IPVS调度器

    直接路由:在链路层工作,通过修改数据包的目的MAC地址,将数据包发到实际服务器上,实际服务器的响应数据包井直接发送给用户端,而不经过调度器

    IP隧道

    十八  性能监控

    实时监控:Nmon+Nmon Analser

    监控代理:SNMP

    系统监控:Cacti

    本书完整版点击下载

  • 相关阅读:
    tiny4412 硬件解码
    orb slam2 双目摄像头
    hi3516a arm-hisiv300-linux-gcc jrtplib交叉编译
    第12章_异常
    第10章_内部类:
    IO流深入总结
    实现对存放了Map集合的ArrayList的排序(按照map中某个字段比较)
    UML各图用处

    File类:
  • 原文地址:https://www.cnblogs.com/raichen/p/4462169.html
Copyright © 2020-2023  润新知