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

作者:网络    软件教程库   2020-05-13

书名:构建高性能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

本书完整版点击下载

《构建高性能 web站点》笔记

原文地址:http://www.cnblogs.com/raichen/p/4462169.html

软件教程库 该篇文章地址:https://www.itjcku.com/9999/1091385.html

阅读全部内容


Tags:构建性能机能站点笔记

返回首页



推荐内容

制作OSX10.10.3启动安装U盘

1.获得install os xyosemite.app 2.准备一个8gb的u盘,用磁盘工具抹掉,格式默认的mac o ...

域名解析URL转发

url转发 转发功能:如果您没有一台独立的服务器(也就是没有一个独立的ip地址)或者您还有一个域名b,您想访问a域名时访 ...

instancetypeVSid

英文好的直接读下面链接的文章就好了: http://stackoverflow.com/questions/897222 ...

androidapp开发感想

这几天帮学长做app的时候,照着视频学了json数据的传递,接着遇到了问题,就是httpurlconnection会 ...

常用软件及注册码

vmware-workstation-full-11.0.0-2305329.exe m50ac-j034j-08l8a ...

[POJ3420]QuadTiling

quad tiling time limit:1000ms memory limit:65536k to ...

C-关键字,标识符,注释

一.关键字:c语言中提供了有特殊含义的符号,也叫做保留字。 c语言中一个32个关键字,这些关键字都被赋予了 ...

C-基本概念

一.程序结构 1.c 程序结构:任何一个c程序都是由一个或小个程序代码块组成,每个小程序都有自己的功能,一般称这些小 ...

应该具备的能力

1. 学习能力(learning ability)   有些东西不懂很正常,从不懂到懂,从懂到精通,自己想想,原来不会的 ...

Apache-rhel5.8环境下编译安装

apache安装过程 step 1:安装包gcc或gcc-c++# yum install gcc#yum insta ...

OpenWrt学习目标

最近在研究openwrt,总感觉这一看一点那也了解一点,没有目的,也没有重心。 这里,给自己拟定一个目标,就朝着这个目标 ...

HelloKiki(hdu3579+不互质的中国剩余定理)

hello kiki time limit:1000msmemory limit:32768kb64bit io ...

android环境下摄像头数据采集及显示

以前项目涉及些摄像头预览及数据处理操作,当时的需求是除了做摄像头预览外,还要显示文字、个性图像等,当初在查找资料实 ...

uva10003CuttingSticks简单区间dp

// uva 10003 cutting sticks 区间dp // 经典的区间dp // dp(i,j)表示切割小木 ...

Go的语言特性总结

写在前面: 近来关于对golang的讨论有很多,七牛的几个大牛们也断定go语言在未来将会快速发展,并且很可能会取代ja ...

golang控制channel的出入口

golang控制channel的出入口 我们常常使用channel来在多个goroutine之间做数据通讯,但是cha ...

UVA10479TheHendrieSequence规律

题目大意:一个序列,刚开始由0变到了1,接着往后一个个变化下去 变化的规则是,如果当前数是k,就在这个序列的最后面加上 ...

在不是Activity类中调用Toast和Dialog

有时候我们需要在非activity类中处理一些逻辑,显示toast对话框或者是弹出一个dialog,但是在非activi ...

查询Oraclesql语句中绑定变量值的方法

alter session set nls_date_format = #39;yyyy-mm-dd,hh24:mi:s ...

Hdoj1588GaussFibonacci【矩阵快速幂】

gauss fibonacci time limit: 1000/1000 ms (java/others) m ...

Hdoj5195DZYLovesTopologicalSorting【拓扑】+【线段树】

dzy loves topological sorting time limit: 4000/2000 ms (jav ...

【转自mos文章】使用单条sql来查询出awr中的syatemstatistics

使用单条sql来查询出awr中的syatem statistics 参考自: how to monitor system ...

I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之u-boot移植

前段时间就开始学习i.mx6q了,但是最近工作实在是忙,间断了一些时间了。为了提高移植效率,还是考虑移植freescal ...

eclipse应用技巧

最近发现eclipse作为ide还是有很多值得探索的使用技巧的,转载一下他人整理好的资源以做分享。 快捷键的使用,加速 ...

Mysql创建数据库的排序规则中文选择哪种编码

mysql中文编码 mysql创建数据库的排序规则 中文 选择哪种编码原文地址:http://blog. ...

线性表简述

一、简单实现增,删,改、查 package datatructs; /** * 表接口 */ public int ...

android测试本地服务调试流程

我今天调试的整个过程 1,安卓发现连不上本地的tomcat 2,使用浏览器直接尝试,发现可以连上 3,怀疑是安卓app和 ...

设计模式1

静态工厂模式,工厂方法模式,抽象工厂模式 工厂方法改进了添加新产品时,静态工厂不满足的开-闭原则;而抽象工厂满足了当产品 ...

c语言文件操作总结

#includelt;stdio.hgt; /********************************** ...

(c#)如果添加的字段中已经有了身份证号码,则年龄和性别和出生年月可得

//把界面文本框里面的身份证号进行提取,以二代身份证为例 model.ecardid = txt_cardno. ...


本网站部分内容来自互联网,版权归原作者所有,文章内容仅代表原作者个人观点。如有侵权请联系我们删除 电子邮件 itjcku@foxmail.com