负载均衡 只能分发http请求吗
Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档。
可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。
目前最主流的三个Web服务器是Apache、Nginx、IIS。
Web服务器的工作原理可分成如下4个步骤:连接过程、请求过程、应答过程以及关闭连接,下面对这4个过程作一简单的介绍。
1、连接过程就是Web服务器和其浏览器之间所建立起来的一种连接。
查看连接过程是否实现,用户可以找到和打开socket这个虚拟文件,这个文件的建立意味着连接过程这一步骤已经成功建立。
2、请求过程就是Web的浏览器运用socket这个文件向其服务器而提出各种请求。
3、应答过程就是运用HTTP协议把在请求过程中所提出来的请求传输到Web的服务器,进而实施任务处理,然后运用HTTP协议把任务处理的结果传输到Web的浏览器,同时在Web的浏览器上面展示上述所请求之界面。
4、关闭连接就是当上一个步骤--应答过程完成以后,Web服务器和其浏览器之间断开连接之过程。
Web服务器上述4个步骤环环相扣、紧密相联,逻辑性比较强,可以支持多个进程、多个线程以及多个进程与多个线程相混合的技术。
怎么解析http
http响应格式 HTTP应答与HTTP请求相似,HTTP响应也由3个部分构成,分别是: l 状态行 l 响应头(Response Header) l 响应正文 在接收和解释请求消息后,服务器会返回一个HTTP响应消息。
状态行由协议版本、数字形式的状态代码、及相应的状态描述,各元素之间以空格分隔。
格式: HTTP-Version Status-Code Reason-Phrase CRLF 例如: HTTP/1.1 200 OK \r\n 状态代码: 状态代码由3位数字组成,表示请求是否被理解或被满足。
状态描述: 状态描述给出了关于状态代码的简短的文字描述。
状态代码的第一个数字定义了响应的类别,后面两位没有具体的分类。
第一个数字有五种可能的取值: - 1xx: 指示信息—表示请求已接收,继续处理。
- 2xx: 成功—表示请求已经被成功接收、理解、接受。
- 3xx: 重定向—要完成请求必须进行更进一步的操作。
- 4xx: 客户端错误—请求有语法错误或请求无法实现。
- 5xx: 服务器端错误—服务器未能实现合法的请求。
状态代码 状态描述 说明 200 OK 客户端请求成功 400 Bad Request 由于客户端请求有语法错误,不能被服务器所理解。
401 Unauthonzed 请求未经授权。
这个状态代码必须和WWW-Authenticate报头域一起使用 403 Forbidden 服务器收到请求,但是拒绝提供服务。
服务器通常会在响应正文中给出不提供服务的原因 404 Not Found 请求的资源不存在,例如,输入了错误的URL。
500 Internal Server Error 服务器发生不可预期的错误,导致无法完成客户端的请求。
503 Service Unavailable 服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常。
响应头 响应头可能包括: Location: Location响应报头域用于重定向接受者到一个新的位置。
例如:客户端所请求的页面已不存在原先的位置,为了让客户端重定向到这个页面新的位置,服务 器端可以发回Location响应报头后使用重定向语句,让客户端去访问新的域名所对应的服务器上的资源。
当我们在JSP中使用重定向语句的时候,服务器 端向客户端发回的响应报头中,就会有Location响应报头域。
Server: Server响应报头域包含了服务器用来处理请求的软件信息。
它和User-Agent请求报头域是相对应的,前者发送服务器端软件的信息,后者发送客户 端软件(浏览器)和操作系统的信息。
下面是Server响应报头域的一个例子:Server: Apache-Coyote/1.1 WWW-Authenticate: WWW-Authenticate响应报头域必须被包含在401(未授权的)响应消息中,这个报头域和前面讲到的Authorization请求报头域是 相关的,当客户端收到401响应消息,就要决定是否请求服务器对其进行验证。
如果要求服务器对其进行验证,就可以发送一个包含了 Authorization报头域的请求,下面是WWW-Authenticate响应报头域的一个例子:WWW-Authenticate: Basic realm="Basic Auth Test!" 从这个响应报头域,可以知道服务器端对我们所请求的资源采用的是基本验证机制。
Content-Encoding: Content-Encoding实体报头域被使用作媒体类型的修饰符,它的值指示了已经被应用到实体正文的附加内容编码,因而要获得Content- Type报头域中所引用的媒体类型,必须采用相应的解码机制。
Content-Encoding主要用语记录文档的压缩方法,下面是它的一个例子: Content-Encoding: gzip。
如果一个实体正文采用了编码方式存储,在使用之前就必须进行解码。
Content-Language: Content-Language实体报头域描述了资源所用的自然语言。
Content-Language允许用户遵照自身的首选语言来识别和区分实体。
如果这个实体内容仅仅打算提供给丹麦的阅读者,那么可以按照如下的方式设置这个实体报头域:Content-Language: da。
如果没有指定Content-Language报头域,那么实体内容将提供给所以语言的阅读者。
Content-Length: Content-Length实体报头域用于指明正文的长度,以字节方式存储的十进制数字来表示,也就是一个数字字符占一个字节,用其对应的ASCII码存储传输。
要注意的是:这个长度仅仅是表示实体正文的长度,没有包括实体报头的长度。
Content-Type Content-Type实体报头域用语指明发送给接收者的实体正文的媒体类型。
例如: Content-Type: text/html;charset=utf-8 Content-Type: text/html;charset=utf-8 Last-Modified Last-Modified实体报头域用于指示资源最后的修改日期及时间。
Expires Expires实体报头域给出响应过期的日期和时间。
通常,代理服务器或浏览器会缓存一些页面。
当用户再次访问这些页面时,直接从缓存中加载并显示给用 户,这样缩短了响应的时间,减少服务器的负载。
为了让代理服务器或浏览器在一段时间后更新页面,我们可以使用Expires实体报头域指定页面过期的时 间。
当用户又一次访问页面时,如果Expires报头域给出的日期和时间比Date普通报头域给出的日期和时间要早(或相同),那么代理服务器或浏览器就 不会再使用缓存的页面而是从服务器上请求更新的页面。
不过要注意,即使页面过期了,也并不意味着服务器上的原始资源在此时间之前或之后发生了改变。
Expires实体报头域使...
愁死我了,CPU负载一直居高不下,怎么解决
【CPU占用率高 的九种可能】1、防杀毒软件造成 故障由于新版的 KV 、金山、 瑞星 都加入了对网页、 插件 、邮件的随机监控,无疑增大了系统负担。
处理方式:基本上没有合理的处理方式,尽量使用最少的监控服务吧,或者,升级你的硬件配备。
2、驱动没有经过认证,造成CPU资源占用100%大量的测试版的驱动在网上泛滥,造成了难以发现的故障原因。
处理方式:尤其是 显卡驱动 特别要注意,建议使用 微软认证 的或由官方发布的驱动,并且严格核对型号、版本。
3、 病毒、木马 造成大量的蠕虫病毒在系统内部迅速复制,造成CPU占用资源率据高不下。
解决办法:用可靠的杀毒软件彻底清理系统内存和本地硬盘,并且打开系统设置软件,察看有无异常启动的程序。
经常性更新升级杀毒软件和防火墙,加强防毒意识,掌握正确的防杀毒知识。
4、控制面板— 管理工具 —服务—RISING REALTIME MONITOR SERVICE 点鼠标右键,改为手动。
5、开始->运行->msconfig->启动,关闭不必要的启动项,重启。
6、查看“ svchost ”进程。
svchost . exe 是Windows XP系统 的一个核心进程。
svchost.exe 不单单只出现 在Window s XP中,在使用 NT 内核的 Windows系统 中都会有svchost.exe的存在。
一般在 Windows 2000 中 svchost.exe进程 的数目为2个,而 在Windows XP中svchost.exe进程的数目就上升到了4个及4个以上。
7、查看 网络连接 。
主要是网卡。
8、查看网络连接当安装了Windows XP的计算机做服务器的时候,收到端口 445 上的连接请求时,它将分配内存和少量地调配 CPU资源来为这些连接提供服务。
当负荷过重的时候,CPU占用率可能过高,这是因为在工作项的数目和响应能力之间存在固有的权衡关系。
你要确定合适的 MaxWorkItems 设置以提高系统响应能力。
如果设置的值不正确,服务器的响应能力可能会受到影响,或者某个用户独占太 多系统 资源。
要解决此问题,我们可以通过修改注册表来解决:在 注册表编辑器中依次展开[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver ]分支,在右侧窗口中 新建 一个名为“maxworkitems”的 DWORD值 。
然后双击该值,在打开的窗口中键入下列数值并保存退出:如果计算机有512MB以上的内存,键入“1024”;如果计算机内存小于 512 MB,键入“256”。
9、看看是不是Windows XP使用鼠标右键引起CPU占用100%前不久的报到说在资源管理器里面使用鼠标右键会导致CPU资源100%占用,我们来看看是怎么回事?征兆:在资源管理器里面,当你右键点击一个目录或一个文件,你将有可能出现下面所列问题:任何文件的拷贝操作在那个时间将有可能停止相应网络连接速度将显著性的降低所有的流输入/输出操作例如使用Windows Media Player 听音乐将有可能是音乐失真成因:当你在资源管理器里面右键点击一个文件或目录的时候,当快捷 菜单显示 的时候,CPU占用率将增加到100%,当你关闭快捷菜单的时候才返回正常水平。
解决方法:方法一:关闭“为菜单和工具提示使用过渡效果”1、点击“开始”--“控制面板”2、在“控制面板”里面双击“显示”3、在“显示”属性里面点击“外观”标签页4、在“外观”标签页里面点击“效果”5、在“效果”对话框里面,清除“为菜单和工具提示使用过渡效果”前面的复选框接着点击两次“确定”按钮。
方法二:在使用鼠标右键点击文件或目录的时候先使用鼠标左键选择你的目标文件或目录。
然后再使用鼠标右键弹出快捷菜单。
CPU占用100%解决办法一般情况下CPU占了100%的话我们的电脑总会慢下来,而很多时候我们是可以通过做 一点点 的改动就可以解决,而不必问那些大虾了。
当机器慢下来的时候,首先我们想到的当然是任务管理器了,看看到底是哪个程序占了较搞的比例,如果是某个大程序那还可以原谅,在关闭该程序后只要 CPU正常了那就没问题;如果不是,那你就要看看是什幺程序了,当你查不出这个进程是什幺的时候就去google或者 baidu 搜。
有时只结束是没用的,在 xp下我们可以结合msconfig里的启动项,把一些不用的项给关掉。
在2000下可以去下个winpatrol来用。
一些常用的软件,比如浏览器占用了很搞的CPU,那幺就要升级该软件或者干脆用别的同类软件代替,有时软件和系统会有点不兼容,当然我们可以试下xp系统下给我们的那个兼容项,右键点该. exe文件 选兼容性。
svchost.exe有时是比较头痛的,当你看到你的某个svchost.exe占用很大CPU时你可以去下个aports或者fport来检查其对应的程序路径,也就是什幺东西在掉用这个svchost.exe,如果不是c:\Windows\ system32 (xp)或c:\winnt\system32(2000)下的,那就可疑。
升级杀毒软件杀毒吧。
右击文件导致100%的CPU占用我们也会遇到,有时点右键停顿可能就是这个问题了。
官方的解释:先点左键选中,再右键(不是很理解)。
非官方:通过在桌面点右键-属性-外观-效果,取消”为菜单和工具提示使用下列过度效果(U)“来解决。
还有某些杀毒软件对文件的监控也会有所影响,可以 关闭杀毒软件的文件监控;还有就是对网页,插件,邮件的监...
LVS 和 Nginx 和 HAproxy 的区别
Nginx的优点是:1、工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构,它的正则规则比HAProxy更为强大和灵活,这也是它目前广泛流行的主要原因之一,Nginx单凭这点可利用的场合就远多于LVS了。
2、Nginx对网络稳定性的依赖非常小,理论上能ping通就就能进行负载功能,这个也是它的优势之一;相反LVS对网络稳定性依赖比较大,这点本人深有体会;3、Nginx安装和配置比较简单,测试起来比较方便,它基本能把错误用日志打印出来。
LVS的配置、测试就要花比较长的时间了,LVS对网络依赖比较大。
3、可以承担高负载压力且稳定,在硬件不差的情况下一般能支撑几万次的并发量,负载度比LVS相对小些。
4、Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点,不过其中缺点就是不支持url来检测。
比如用户正在上传一个文件,而处理该上传的节点刚好在上传过程中出现故障,Nginx会把上传切到另一台服务器重新处理,而LVS就直接断掉了,如果是上传一个很大的文件或者很重要的文件的话,用户可能会因此而不满。
5、Nginx不仅仅是一款优秀的负载均衡器/反向代理软件,它同时也是功能强大的Web应用服务器。
LNMP也是近几年非常流行的web架构,在高流量的环境中稳定性也很好。
6、Nginx现在作为Web反向加速缓存越来越成熟了,速度比传统的Squid服务器更快,可以考虑用其作为反向代理加速器。
7、Nginx可作为中层反向代理使用,这一层面Nginx基本上无对手,唯一可以对比Nginx的就只有lighttpd了,不过lighttpd目前还没有做到Nginx完全的功能,配置也不那么清晰易读,社区资料也远远没Nginx活跃。
8、Nginx也可作为静态网页和图片服务器,这方面的性能也无对手。
还有Nginx社区非常活跃,第三方模块也很多。
Nginx的缺点是:1、Nginx仅能支持http、https和Email协议,这样就在适用范围上面小些,这个是它的缺点。
2、对后端服务器的健康检查,只支持通过端口来检测,不支持通过url来检测。
不支持Session的直接保持,但能通过ip_hash来解决。
LVS LVS:使用Linux内核集群实现一个高性能、高可用的负载均衡服务器,它具有很好的可伸缩性(Scalability)、可靠性(Reliability)和可管理性(Manageability)。
LVS的优点是:1、抗负载能力强、是工作在网络4层之上仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的,对内存和cpu资源消耗比较低。
2、配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率。
3、工作稳定,因为其本身抗负载能力很强,自身有完整的双机热备方案,如LVS+Keepalived,不过我们在项目实施中用得最多的还是LVS/DR+Keepalived。
4、无流量,LVS只分发请求,而流量并不从它本身出去,这点保证了均衡器IO的性能不会收到大流量的影响。
5、应用范围比较广,因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括http、数据库、在线聊天室等等。
LVS的缺点是:1、软件本身不支持正则表达式处理,不能做动静分离;而现在许多网站在这方面都有较强的需求,这个是Nginx/HAProxy+Keepalived的优势所在。
2、如果是网站应用比较庞大的话,LVS/DR+Keepalived实施起来就比较复杂了,特别后面有Windows Server的机器的话,如果实施及配置还有维护过程就比较复杂了,相对而言,Nginx/HAProxy+Keepalived就简单多了。
HAProxy HAProxy的特点是:1、HAProxy也是支持虚拟主机的。
2、HAProxy的优点能够补充Nginx的一些缺点,比如支持Session的保持,Cookie的引导;同时支持通过获取指定的url来检测后端服务器的状态。
3、HAProxy跟LVS类似,本身就只是一款负载均衡软件;单纯从效率上来讲HAProxy会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。
4、HAProxy支持TCP协议的负载均衡转发,可以对MySQL读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,大家可以用LVS+Keepalived对MySQL主从做负载均衡。
5、HAProxy负载均衡策略非常多,HAProxy的负载均衡算法现在具体有如下8种:①roundrobin,表示简单的轮询,这个不多说,这个是负载均衡基本都具备的;② static-rr,表示根据权重,建议关注;③leastconn,表示最少连接者先处理,建议关注;④ source,表示根据请求源IP,这个跟Nginx的IP_hash机制类似,我们用其作为解决session问题的一种方法,建议关注;⑤ri,表示根据请求的URI;⑥rl_param,表示根据请求的URl参数'balance url_param' requires an URL parameter name;⑦hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;⑧rdp-cookie(name),表示根据据cookie(name)来锁定并哈希每一次TCP请求。
本人博客自己写的 blog.jxhs.me
怎么在windows系统中安装Jmeter压力测试工具
Apache JMeter是Apache组织开发的基于Java的压力测试工具。
用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域。
怎么在windows系统中安装Jmeter压力测试工具?下面一起来学习一下吧 ?Apache JMeter是Apache组织开发的基于Java的压力测试工具。
用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域。
它可以用于测试静态和动态资源例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库, FTP 服务器, 等等。
JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。
Jmeter JMeter的作用1.能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试(通过JDBC)。
2.完全的可移植性和100% 纯java。
3.完全 Swing 和轻量组件支持(预编译的JAR使用 javax.swing.*)包。
4.完全多线程 框架允许通过多个线程并发取样和 通过单独的线程组对不同的功能同时取样。
5.精心的GUI设计允许快速操作和更精确的计时。
6.缓存和离线分析/回放测试结果。
一、Jmeter安装总结1、配置Java环境变量时需要注意设置的路径需要和JDK安装的路径一样2、配置Java环境变量时需要注意JDK的版本号3、配置环境变量时多个变量以分号隔开,但是确保是英文输入法的分号 二、搭建测试环境总结1、检测负载机是否可以被调用,检测负载机的ip是否能被ping通2、当负载机的ip不能ping通时,有可能是防火墙拦截了,可以检测防火墙是否是启用状态,如果是暂时设置禁用防火墙3、测试的数据调用文件应该放在负载机上,并且在控制中心设置正确的数据访问路径 Jmeter测试工具安装步骤:1、安装Jmeter 下载Jmeter工具包 并把工具包放到C盘下 http://jmeter.apache.org/download_jmeter.cgi2、安装JDK 下载Java的JDK并安装,一般会安装在C:\Program Files\Java目录下 http://java.sun.com/javase/downloads/index.jsp3、Java环境变量配置 桌面上 右键选中计算机--->属性--->高级系统设置--->环境变量设置 在“系统变量”--->“新建”, 在变量名中输入:CLASSPATH,变量值中输入:C:\Program Files\Java\jdk1.6.0_10\lib\dt.JAR; C:\Program Files\Java\jdk1.6.0_10\lib\TOOLS.JAR; C:\Program Files\Java\jdk1.6.0_10\BIN;再按“新建”,在变量名中输入:JAVA_HOME,变量中输入:C:\Program Files\Java\jdk1.6.0_10;修改PATH变量,添加%JAVA_HOME%/bin;然后确定即可4、Jmeter环境变量配置 桌面上 右键选中计算机--->属性--->高级系统设置--->环境变量设置 在“系统变量”--->“新建”, 在变量名中输入:JMETER_HOME,变量值中输入:C:\jakarta-jmeter-2.3.4 ,再修改CLASSPATH变量,变量值中添加%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;% JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-1.2.jar; 然后确定即可 意义1、Label: 定义的HTTP请求名称2、Samples: 表示这次测试中一共发出了多少个请求3、Average: 访问页面的平均响应时间4、Min: 访问页面的最小响应时间5、Max: 访问页面的最大响应时间6、Error%: 错误的请求的数量/请求的总数7、Throughput:每秒完成的请求数8、KB/Sec: 每秒从服务器端接收到的数据量
转载请注明出处51数据库 » http请求负载软件