计算机网络系列博文——目录
20世纪90年代初
因特网应用
Web应用的组成
由对象组成。对象是一个文件,如HTML文件,JPEG图像,Java程序,视频片段等。
对象可通过一个URL地址寻址。
Web页面常由一个HTML基本文件和多个引用对象构成。
URL(Uniform Resoure Locator):统一资源定位器 RFC1738
用以寻址Web对象
由一个存放对象的服务器主机名和对象路径名构成。
HTTP 由客户端程序和服务端程序实现,二者通过交换HTTP报文会话。
HTTP规范定义了HTTP客户端和服务端之间的通信协议。
Web浏览器实现HTTP客户端,请求、接收、展示Web对象
Web服务器实现HTTP服务端,响应客户的请求,发送对象
HTTP使用TCP作为支撑运输层协议。
端口:80
无状态协议 服务器不保存关于客户的任何信息
服务器向客户发送被请求的文件,而不存储任何关于客户的状态信息。
往返时间(Round-Trip Time,RTT)
一个短分组从客户到服务器然后再返回客户所花费的时间。
某客户和服务器的一次会话中,每个请求/响应对通过一个单独的TCP连接传输
HTTP 1.0版本使用非持续性连接
对多个待获得的web对象,客户端一次只请求一个对象,待前一个对象接收完毕后再发送对下一个对象的请求。
时间分析
浏览器通常支持并行的TCP连接。并行TCP连接数通常为5~10个。
对多个待获得的web对象,客户端一次可同时建立多个TCP连接,以同时请求多个web对象。
时间分析
某客户和服务器的一次会话中,所有请求/响应对经同一TCP连接传输
HTTP 1.1版本在默认方式下采用持续连接,但也可由客户端/服务器配置为非持续连接。
客户端只有收到前一个响应后才发送新的请求
可理解为同个TCP内的串行
时间分析
客户端只要遇到一个引用对象就尽快发出请求
可理解为同个TCP内的并行
HTTP 1.1的默认选项
时间分析
TCP 三次握手
1.客户向服务器发送一个小TCP报文段;
2.服务器用一个小TCP报文段做出确认和响应;
3.客户向服务器返回确认和一个HTTP请求报文;
4.服务器返回相应HTML文件
HTTP规范
RFC 1945 , RFC 2616
用ASCII文本书写
HTTP协议有两类消息,请求消息(request)和响应消息(response)
请求行 HTTP请求报文的第一行
方法
首部行 请求行后继的其它行,包含一些会话信息
空行 回车换行,分隔首部行和实体体
实体体(entity body)
GET方法下实体体为空
POST方法下实体体包含表单信息
状态行
常见状态码
首部行
空行
实体体
包含了所请求的对象
HTTP是无状态协议,但cookie技术允许服务器识别用户
cookie在无状态的HTTP之上建立一个用户会话层
参见 [RFC 6265]
cookie组件
cookie技术的争议在于它可能泄露用户的隐私
代表原Web服务器来响应HTTP请求的网络实体
Web缓冲器通常由ISP购买并安装
允许缓存器证实其缓存的副本是新的。
如果缓存器有web对象最新的版本,则初始服务器不需要向缓存器发送该web对象
在HTTP请求消息中声明所持有版本的日期
If-modified-since: <date>
如果缓存的版本是最新的,则响应消息中不包含对象
HTTP/1.0 304 Not Modified
内容分发网络(Content Distribution Network,CDN)
基于缓存器技术,CDN公司在因特网上安装许多地理上分散的缓存器,使得大流量本地化。
有共享CDN(Akamai,Limelight),专用CDN(谷歌,微软)
Web服务器:一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档。
Web服务器作用:
1、放置网站文件,让全世界浏览;
2、可以放置数据文件,让全世界下载。
Web服务器分类:
1、Apache;
2、Nginx;
3、IIS。
Web服务器工作原理可分为四个步骤:
连接过程、请求过程、应答过程以及关闭连接。
这种问题挺复杂的,有些原因真的很出意料,一般程式化的方法还找不到。1.先用浏览器F12控台查看一下网页加载资源的情况,看是不是某些资源加载慢的缘故。
2.如果不是的话, 那就检查一下是不是网络问题。
3.如果都不是上面的问题,你再去看下服务器的状况,应该有后台可以看,看下是不是带宽不足。(或者用top,iptraf命令看一下)
4.最后还有问题的话看下你php代码是不是有问题,用xhprof看下代码哪里慢。
---------
例1:
服务器: 戴尔 PowerEdge R620 Rack Mount Chassis
今天公司的 web服务器响应异常的慢 平常 200ms 执行完毕的一个action,现在要 2秒多才能执行那个完毕。
之前也出现过这种状况,但再重启之后就一般及解决了。
遍历网上
说是
1、网络原因 2、系统原因 3、硬件原因
首先分析网络原因 我 ping 服务器的 接收到响应要1ms,平常都是小于 1ms
2、系统原因
我查看了任务管理器发现 CPU 横容易就奔向100%了。
4 个cpu 核心 马上冲向顶端持平了。
3、硬件原因
听网上说可能还有一部分磁盘 i/o 也会导致运行速度大减的
2、3 部分图片当时很着急解决问题没有截图、
下面是今天晚上服务器 恢复正常后的基本空闲时的cpu 状况、和磁盘读取状况
想问一下、普通我这种刀片服务器正常运行时oracle 的一般最高读写速度、为什么怎样找到程序中那个可能正执行死循环的程序
经过之前一天的推测,觉得应该是服务器上的另一个应用服务器,出现了死循环,联系了此程序开发人员让其恢复了上一个版本,问题就没有了。
就是那一个个验证推测麻烦,花了我一天的时间,想直接知道哪里死循环。
经过之前一天的推测,觉得应该是服务器上的另一个应用服务器,出现了死循环,联系了此程序开发人员让其恢复了上一个版本,问题就没有了。
就是那一个个验证推测麻烦,花了我一天的时间,想直接知道哪里死循环。
例2:
我的WIN2003独立服务器(P4 2.8G/1G的方正商用机,非专业服务器),ACCESS数据库有800多兆,同时在线会员100多人。浏览速度很慢,日发帖从1000多锐减到200多贴,网友怨声载道,不得已才转换到DZ。
转换后DZ的数据库有600多兆。刚开始挺快的,随后升级到DZ6.1,现在过了才1个多月,服务器响应越来越慢。CPU占用并不高,通常不到20%,内存占用好像也正常。就是经常硬盘灯一直亮(是常亮,不是闪亮),每到这时论坛页面就打不开,有时光显示页面头部,要等很长时间。硬盘灯不常亮的时候速度挺快。
以前是一两天出现一次,后来越来越频繁,现在过不多大会儿就出现一次,简直受不了了。
相信很多人在用windows2003服务器或者vps,而且一开始用,速度都相当的快,但是过了几天速度变慢了很多,也会遇到有时候网站打开卡等现象,即使网站没什么流量也会出现。
有时候就会怀疑是不是我的服务器或者vps很差劲,买到假货了?其实不然。
其实这些问题作祟的都是w3wp.exe这个iis进程在捣鬼。
在WINDOWS2003+IIS6下,经常出现w3wp的内存占用不能及时释放,从而导致服务器响应速度很慢。
遇到这些现象,我们可以用以下方法进行解决,不影响网站运营及系统问题。
可以做以下配置修改进行改善:
1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。
2、设置应用程序池的回收时间,默认为1720小时,可以根据情况修改。同时,设置同时运行的web工作进程数目为1。再设置当内存或者cpu占用超过多少,就自动回收内存。
一般来说就可以解决了。但仍然会出现个别网站因为程序问题,不能正确释放。
那么,怎么样才能找到是哪一个网站的?解决办法:
1、在任务管理器中增加显示pid字段。就可以看到占用内存或者cpu最高的进程pid
2、在命令提示符下运行iisapp -a。注意,第一次运行,会提示没有js支持,点击确定。然后再次运行就可以了。这样就可以看到pid对应的应用程序池
3、到iis中察看该应用程序池对应的网站,就可以了。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)