首页 > 代码库 > 负载均衡在性能测试里的应用
负载均衡在性能测试里的应用
Web服务器负载均衡定义、作用及类型
- 负载均衡的定义
负载均衡是由多台服务器以对称的方式做成一个服务器集合,每台服务器都有等价的地位,都可以单独对外提供服务而无须其他服务器辅助。通过某种负载分担技术,将外 部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立的回应客户的请求
- 负载均衡的作用
如果web站点负载量非常大时,应当考虑负载均衡技术来将负载平均分摊到多个内部服务器上。如果有多个服务器同时执行某一任务,这些服务器就构成一个集群。使用集
群技术可以用最少的投资获得最接近于大型主机的性能
- 类型
基于DNS的负载均衡
通过DNS服务中的随机名字来解析实现负载均衡,在DNS服务器中,可以为多个不同的地址配置同一个名字,而最终查询这个名字的客户机将在解析这个名字时得到其中的
一个地址。因此,对于同一个名字,不同的客户机会得到不同的地址,他们就访问不同地址上的web服务器,从而达到负载均衡的目的
反向代理负载均衡
使用代理服务器可以将请求转发给内部的web服务器,让代理服务器将请求平均地转发给多台内部web服务器之一上,从而达到负载均衡的目的。这种代理方式与普通代理
方式有所不同,标准代理方式是客户使用代理访问多个外部web服务器,而这种代理方式是多个客户使用它访问内部web服务器,因此被称为反向代理模式
基于NAT的负载均衡技术
网络地址转换为在内部地址和外部地址之间进行转换,以便具备内部地址的计算机能访问外部网络,而当外部网络中的计算机访问地址转换网关拥有的某一外部地址时,地
址转换网关能将其映射到一个内部地址上。因此如果地址转换网关能将每个连接均匀转换为不同的内部服务器地址,此后外部网络中的计算机就各自与自己转换得到的地址
上的服务器进行通信,从而达到负载均衡的目的
前段时间做了个性能测试,跑完了得到的服务器CPU还有内存的使用率如下:
Servers | CPU Utilization (%) | Memory (%) | ||||
Min | Avg | Max | Min | Avg | Max | |
App server | 0.49 | 76.65 | 98.05 | 61.40 | 61.54 | 61.72 |
- sidmsappsprd01 | ||||||
App server | 0.00 | 0.98 | 23.75 | 16.99 | 17.04 | 17.22 |
- sidmsappsprd02 |
很明显看出所有的客户端请求都被发送到App server01上去了。在了解了负载均衡的知识后,我们可以分析下如何解决上述问题。
在windows 2000以上的微软操作系统中,系统会自动的将DNS服务器上的查询结果保存在DNS缓存中,那么下次再有重复的请求,系统会优先查询本地缓存。如果已有对应内容,则不再向DNS服务器发送请求,缓存中无记录时才查询DNS服务器。本来设定此DNS缓存的目的是为了能减少DNS服务器的负荷,不对同一个域名解析多次,同时也能加快客户主机的访问速度。在DNS缓存记录条目每隔一段时间将被更新一次,长时间不用的内容将被丢弃。这个时间间隔称为生存时间(TTL - Time to Live),简单的说它表示DNS记录在DNS服务器上缓存时间,直接地说,此值影响客户第二次访问站点的速度。默认情况下,得到肯定响应的条目TTL值为86400s(1天),否定响应的TTL windows 2000平台下是300s,在XP 和 2003 中是900s。
Windows 7上我发现没有发现有TTL多长时间的定义:
打开注册表:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Dnscache\Parameters
Windows7以上你可以通过添加maxcacheTTL跟MaxNegativeCacheTtl来定义
而XP以及之前的版本应该用MaxCacheEntryTtlLimit跟MaxNegativeCacheTtl来定义
正是由于肯定响应和否定响应的TTL时间过长,所以才造成了故障主机在得到一次否定的DNS解析之后,一段时间内无法再到DNS服务器上查询,只有等TTL时间过了之后,新的请求才有可能被别的负载均衡器响应。可以通过调整注册表肯定和否定响应时间的大小来处理上面的问题。
谷哥找到的一段参考:
Using the Registry to Control the Caching Time
The length of time for which a positive or negative response is cached depends on the values of entries in the following registry key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNSCache\Parameters
The TTL for positive responses is the lesser of the following values:
- The number of seconds specified in the query response the resolver received
- The value of the MaxCacheTtl registry setting.
Notes
- The default TTL for positive responses is 86,400 seconds (1 day).
- The TTL for negative responses is the number of seconds specified in the MaxNegativeCacheTtl registry setting.
- The default TTL for negative responses is 900 seconds (15 minutes).
If you do not want negative responses to be cached, set the MaxNegativeCacheTtl registry setting to 0.
To set the caching time on a client computer:
- Start Registry Editor (Regedit.exe).
- Locate and then click the following key in the registry:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
- On the Edit menu, point to New , click DWORD Value, and then add the following registry values: Value name: MaxCacheTtl
Data type: REG_DWORD Default value: 86400 seconds Value data: If you lower the Maximum TTL value in the client‘s DNS cache to 1 second, this gives the appearance that the client-side DNS cache has been disabled.
Value name: MaxNegativeCacheTtl
Data type: REG_DWORD Default: 900 seconds Value data: Set the value to 0 if you do not want negative responses to be cached.
- Type the value that you want to use, and then click OK.
- Quit Registry Editor.
负载均衡在性能测试里的应用