上一主题: NASR 组件下一主题: 监控组件


SQUID-SQUID 代理

最新版本:3.0.2-1

SQUID:代理服务器

概览

目录

系统

类别

杂项 组件

用户卷

yes

最小 内存

96M

操作系统

Linux

约束

问题/注释

咨询论坛

功能概述

SQUID 是正向或反向缓存代理组件。 SQUID 充当代理,接受其 in 终端上的客户端发出的 HTTP 请求,并将请求传递到 out 终端上连接的相应服务器。 它在内存中和磁盘上的缓存中存储返回数据的副本。 如果多次请求了相同的数据,缓存的数据将返回到客户端,从而可以加速访问并减少源服务器负载。

SQUID 支持两种模式的操作:代理模式和 Web 加速器模式。

代理模式

在代理模式下,SQUID 充当正向缓存代理,它通常安装在一个或多个客户端与 Internet 之间。 它保存频繁请求的数据的本地副本,并在适当的时候返回缓存的内容,从而加快服务请求并减少上行带宽。

Web 加速器模式

在 Web 加速器模式下,SQUID 充当缓存反向代理,且其通常安装在一个或多个 Web 服务器的前面。 流向 Web 服务器的所有流量都要通过 SQUID。 SQUID 将保存频繁请求的数据的本地副本,并在适当的情况下返回缓存的内容,从而减少后端服务器上的响应时间和负载。

资源

资源

最小值

最大值

默认值

已测试

CPU

0.05

2

0.2

2

内存

96 MB

4 GB

256 MB

4 GB

带宽

1 Mbps

2 Gbps

250 Mbps

1.5 Gbps

SQUID 的内存要求

SQUID 需要的内存量取决于缓存卷大小和并发请求数。 SQUID 最多使用 10 MB 内存为 1 GB 缓存存储编制索引。 因此,使用 100 GB 缓存卷时需要再增加 1 GB 内存。 此外,部分内存量用于为每个连接提供服务。 SQUID 最多使用 20 MB 内存为 1000 个并发连接提供服务。 因此,如果预期有 5000 个并发连接,SQUID 内存应增加 100 MB。

重要信息! 如果内存不足,SQUID 可能无法正常工作。

终端

名称

dir

协议

说明

in

in

HTTP

接受传入请求。

out

out

HTTP

将流量外发到目标服务器并接收响应。

日志

out

CIFS

访问用于存储日志的基于 CIFS 的网络文件系统。 已连接的服务器必须允许匿名登录并拥有名称为 share 的读写共享。 如果不使用此终端,可以让它保持未连接状态。

mon

out

CCE

发送性能和资源使用统计信息。 如果未使用该终端,则可将其保持未连接状态。

用户卷

名称

说明

cache

缓存文件存储的卷。 该卷是强制性卷。 缓存卷的最小大小为 100M。

注意:

常规属性

名称

类型

说明

mode

字符串

操作方式。 有效值为 proxy 或 web_accelerator。
proxy-SQUID 以代理模式运行,充当正向缓存代理。
web_accelerator-SQUID 以 Web 加速器模式运行,充当反向缓存代理
默认值:web_accelerator

listen_port

Int

接受处于 proxy 模式的内部客户端发出的请求或处于 web_accelerator 模式的外部网站用户发出的请求的端口。
默认值:80

hostname

字符串

要在错误消息中使用的主机名。
默认值:localhost

connect_timeout

Int

SQUID 等待 TCP 连接到所请求服务器的超时值(秒)。 如果超过该超时值,SQUID 将使用错误消息“连接超时”向客户端作出响应。
默认值:30

日志记录属性

名称

类型

说明

log_enable

字符串

启用或禁用访问日志。
默认值:no

log_filename

字符串

访问日志的文件名,相对于通过日志终端访问的文件系统。 文件名可以包括路径,例如:使用值 access.log 会将日志文件指定为 /mnt/log/access.log,而使用值 /proxy_logs/squid1_access.log 会将日志文件指定为 /mnt/log/proxy_logs/squid1_access.log
默认值:access.log

log_format

字符串

访问日志的格式。
native-使用 SQUID 本机日志记录格式。
httpd-使用 httpd 日志记录格式。
默认值:native

自定义计数器

SQUID 组件通过 mon 终端报告以下自定义计数器。

SNMP 计数器名称

计数器名称

描述

SQUID-MIB::cacheSysVMsize

SysVMsize

内存缓存大小 (KB)。

SQUID-MIB::cacheSysStorage

SysStorage

磁盘缓存大小 (KB)。

SQUID-MIB::cacheUptime

Uptime

SQUID 运行时间(以时间刻度-1/100 秒为单位)。

SQUID-MIB::cacheSysPageFaults

SysPageFaults

包含物理 I/O 的页面错误。

SQUID-MIB::cacheSysNumReads

SysNumReads

HTTP I/O 读取数。

SQUID-MIB::cacheMemUsage

MemUsage

SQUID 使用的总内存 (KB)。

SQUID-MIB::cacheCpuTime

CpuTime

使用的 cpu 秒数。

SQUID-MIB::cacheCpuUsage

CpuUsage

CPU 使用百分比。

SQUID-MIB::cacheMaxResSize

MaxResSize

最大驻留大小 (KB)。

SQUID-MIB::cacheNumObjCount

NumObjCount

存储在缓存中的对象数。

SQUID-MIB::cacheCurrentUnlinkRequests

CurrentUnlinkRequests

提供给 unlinkd 的请求。

SQUID-MIB::cacheCurrentUnusedFDescrCnt

CurrentUnusedFDescrCnt

文件描述符的可用数量。

SQUID-MIB::cacheCurrentResFileDescrCnt

CurrentResFileDescrCnt

文件描述符的保留数量。

SQUID-MIB::cacheCurrentFileDescrCnt

CurrentFileDescrCnt

正在使用的文件描述符数。

SQUID-MIB::cacheCurrentFileDescrMax

CurrentFileDescrMax

正在使用的最大文件描述符数。

SQUID-MIB::cacheProtoClientHttpRequests

ProtoClientHttpRequests

接收的 HTTP 请求数。

SQUID-MIB::cacheHttpHits

HttpHits

缓存 HTTP 命中数。

SQUID-MIB::cacheHttpErrors

HttpErrors

缓存 HTTP 错误数。

SQUID-MIB::cacheHttpInKb

HttpInKb

接收的 HTTP 流量 (KB)。

SQUID-MIB::cacheHttpOutKb

HttpOutKb

发送的 HTTP 流量 (KB)。

SQUID-MIB::cacheServerRequests

ServerRequests

客户端针对缓存服务器发出的请求数。

SQUID-MIB::cacheServerErrors

ServerErrors

客户端针对缓存服务器发出的请求的所有错误

SQUID-MIB::cacheServerInKb

ServerInKb

来自服务器的传入流量 (KB)。

SQUID-MIB::cacheServerOutKb

ServerOutKb

流向服务器的传出流量 (KB)。

SQUID-MIB::cacheClients

Clients

访问缓存的客户端数

SQUID-MIB::cacheHttpAllSvcTime.1

HttpAllSvcTime1

在处理 HTTP 请求上花费的 CPU 时间(最后 1 分钟,以秒为单位)。

SQUID-MIB::cacheHttpAllSvcTime.5

HttpAllSvcTime5

在处理 HTTP 请求上花费的 CPU 时间(最后 5 分钟,以秒为单位)。

SQUID-MIB::cacheHttpAllSvcTime.60

HttpAllSvcTime60

在处理 HTTP 请求上花费的 CPU 时间(最后 60 分钟,以秒为单位)。

SQUID-MIB::cacheHttpMissSvcTime.1

HttpMissSvcTime1

在处理缓存错失上花费的 CPU 时间(最后 1 分钟,以秒为单位)。

SQUID-MIB::cacheHttpMissSvcTime.5

HttpMissSvcTime5

在处理缓存错失上花费的 CPU 时间(最后 5 分钟,以秒为单位)。

SQUID-MIB::cacheHttpMissSvcTime.60

HttpMissSvcTime60

在处理缓存错失上花费的 CPU 时间(最后 60 分钟,以秒为单位)。

SQUID-MIB::cacheHttpNmSvcTime.1

HttpNmSvcTime1

在处理缓存命中上花费的 CPU 时间(内容未修改)(最后 1 分钟,以秒为单位)。

SQUID-MIB::cacheHttpNmSvcTime.5

HttpNmSvcTime5

在处理缓存命中上花费的 CPU 时间(内容未修改)(最后 5 分钟,以秒为单位)。

SQUID-MIB::cacheHttpNmSvcTime.60

HttpNmSvcTime60

在处理缓存命中上花费的 CPU 时间(内容未修改)(最后 60 分钟,以秒为单位)。

SQUID-MIB::cacheHttpHitSvcTime.1

HttpHitSvcTime1

在处理缓存命中上花费的 CPU 时间(最后 1 分钟,以秒为单位)。

SQUID-MIB::cacheHttpHitSvcTime.5

HttpHitSvcTime5

在处理缓存命中上花费的 CPU 时间(最后 5 分钟,以秒为单位)。

SQUID-MIB::cacheHttpHitSvcTime.60

HttpHitSvcTime60

在处理缓存命中上花费的 CPU 时间(最后 60 分钟,以秒为单位)。

SQUID-MIB::cacheDnsSvcTime.1

DnsSvcTime1

在处理 DNS 请求上花费的 CPU 时间(最后 1 分钟,以秒为单位)。

SQUID-MIB::cacheDnsSvcTime.5

DnsSvcTime5

在处理 DNS 请求上花费的 CPU 时间(最后 5 分钟,以秒为单位)。

SQUID-MIB::cacheDnsSvcTime.60

DnsSvcTime60

在处理 DNS 请求上花费的 CPU 时间(最后 5 分钟,以秒为单位)。

SQUID-MIB::cacheRequestHitRatio.1

RequestHitRatio1

请求命中率(最后 1 分钟,以百分比为单位,刻度为 0-100)。

SQUID-MIB::cacheRequestHitRatio.5

RequestHitRatio5

请求命中率(最后 5 分钟,以百分比为单位,刻度为 0-100)。

SQUID-MIB::cacheRequestHitRatio.60

RequestHitRatio60

请求命中率(最后 60 分钟,以百分比为单位,刻度为 0-100)。

SQUID-MIB::cacheRequestByteRatio.1

RequestByteRatio1

字节命中率(最后 1 分钟,以百分比为单位,刻度为 0-100)。

SQUID-MIB::cacheRequestByteRatio.5

RequestByteRatio5

字节命中率(最后 5 分钟,以百分比为单位,刻度为 0-100)。

SQUID-MIB::cacheRequestByteRatio.60

RequestByteRatio60

字节命中率(最后 60 分钟,以百分比为单位,刻度为 0-100)。

SQUID-MIB::cacheHttpNhSvcTime.1

HttpNhSvcTime1

在处理缓存命中上花费的 CPU 时间(内容刷新)(最后 1 分钟,以秒为单位)。

SQUID-MIB::cacheHttpNhSvcTime.5

HttpNhSvcTime5

在处理缓存命中上花费的 CPU 时间(内容刷新)(最后 5 分钟,以秒为单位)。

SQUID-MIB::cacheHttpNhSvcTime.60

HttpNhSvcTime60

在处理缓存命中上花费的 CPU 时间(内容刷新)(最后 60 分钟,以秒为单位)。

SQUID-MIB::cacheIpEntries

IpEntries

IP 缓存条目。

SQUID-MIB::cacheIpRequests

IpRequests

IP 缓存请求数。

SQUID-MIB::cacheIpHits

IpHits

IP 缓存命中数。

SQUID-MIB::cacheIpPendingHits

IpPendingHits

IP 缓存未决命中数。

SQUID-MIB::cacheIpNegativeHits

IpNegativeHits

IP 缓存负命中数。

SQUID-MIB::cacheIpMisses

IpMisses

IP 缓存错失数。

SQUID-MIB::cacheBlockingGetHostByName

BlockingGetHostByName

阻止 gethostbyname 请求的次数。

SQUID-MIB::cacheAttemptReleaseLckEntries

AttemptReleaseLckEntries

尝试释放已锁定 IP 缓存条目的次数。

SQUID-MIB::cacheFqdnEntries

FqdnEntries

FQDN 缓存条目。

SQUID-MIB::cacheFqdnRequests

FqdnRequests

FQDN 缓存请求数。

SQUID-MIB::cacheFqdnHits

FqdnHits

FQDN 缓存命中数。

SQUID-MIB::cacheFqdnPendingHits

FqdnPendingHits

FQDN 缓存未决命中数。

SQUID-MIB::cacheFqdnNegativeHits

FqdnNegativeHits

FQDN 缓存负命中数。

SQUID-MIB::cacheFqdnMisses

FqdnMisses

FQDN 缓存错失数。

SQUID-MIB::cacheBlockingGetHostByAddr

BlockingGetHostByAddr

阻止 gethostbyaddr 请求的次数。

SQUID-MIB::cacheDnsRequests

DnsRequests

外部 dnsserver 请求数。

SQUID-MIB::cacheDnsReplies

DnsReplies

外部 dnsserver 回复数。

SQUID-MIB::cacheDnsNumberServers

DnsNumberServers

外部 dnsserver 进程数。

SQUID-MIB::cachePeerRtt

PeerRtt

与对等方之间的上一个已知往返时间(毫秒)。

错误消息

在组件启动失败的情况下,系统日志可能记录以下错误消息:

错误消息

描述

缓存卷不可访问。

组件无法访问缓存卷,可能是因为文件系统已损坏。

已启用访问日志,但未连接日志终端。

日志终端未连接,但 log_enable 设置为 yes。

无法运行 squid。

组件无法启动。 可能原因是用户定义的配置中存在错误。

性能

下表包含禁用日志记录的情况下获得的基准结果(以每秒请求数 (rps) 为单位进行指定)。 启用日志记录时,SQUID 的性能可能会下降。 基准是使用 Apache Web 服务器版本 2.0 和 2.2 随附的 Apache Benchmark 实用工具生成的。 Apache 网站上提供了有关 Apache 基准的更多信息。 使用下列设置执行基准测试:bw=500M mem=2G cpu=2。

缓存命中

并发

rps

1 个并发客户端

1500-1800 rps

10 个并发客户端

5800-6200 rps

100 个并发客户端

7400-7800 rps

500 个并发客户端

5300-5500 rps

1000 个并发客户端

5300-5500 rps

缓存错失

并发

rps

1 个并发客户端

700-800 rps

10 个并发客户端

2000-2200 rps

100 个并发客户端

1900-2100 rps

500 个并发客户端

1800-2000 rps

1000 个并发客户端

1600-1800rps

Web 加速器模式

使用 SQUID 可以通过为所有静态文档提供服务来减少 AppServer 上的负载。 注意:如果 java 应用为生成的文档设置了 Expires: HTTP 头,SQUID 将在这些文档的生存期内为其提供服务。

正在使用的组件:

示例属性配置:

属性名

说明

mode

web_accelerator

SQUID 以 Web 加速器模式运行,充当反向缓存代理

listen_port

80

HTTP 请求的默认端口。

主机名

www.host.com

在错误消息中使用的主机名

Web 加速器模式:包含许多 Web 服务器的应用

SQUID 用于加快许多 Web 服务器的速度。 在本例中,有一个 URLSW 组件通过 url 将请求分发到不同的 Web 服务器。 正在使用的组件:

SQUID 的示例属性配置:

属性名

注释

mode

web_accelerator

SQUID 以 Web 加速器模式运行,充当反向缓存代理

listen_port

80

HTTP 请求的默认端口。

hostname

www.host1.com

在错误消息中使用的主机名

交换机配置:

属性名

注释

out1_type

hostname

out1_value

host1.com

对 host1.com 的请求由 server1 提供服务

out2_type

hostname

out2_value

host2.com

对 host2.com 的请求由 server2 提供服务

out3_type

hostname

out3_value

host3.com

对 host3.com 的请求由 server3 提供服务

out4_type

hostname

out4_value

host4.com

对 host4.com 的请求由 server4 提供服务

代理模式

对于内容处理任务,SQUID 可以加速提取重复请求,减少目标 Web 服务器上的负载和带宽使用。 在本例中,如果 crawler1 已请求来自 Internet 的一些内容(如网页、pdf 文档或图片),其他爬网程序将接收相同内容的缓存结果。

正在使用的组件:

示例属性配置:

属性名

注释

mode

代理

SQUID 以代理模式运行,充当正向缓存代理

listen_port

3128

SQUID 在其上侦听 HTTP 请求的端口。

hostname

proxy.enterprise.local

在错误消息中使用的主机名

注释

组件内所用的开源和第三方软件

SQUID 除了使用其基类 LUX6 所用的第三方开源软件包之外,还使用下列第三方/开源软件包。

软件

版本

已修改

许可

注释

net-snmp

5.5-41.el6_3.1

No

BSD

不适用

net-snmp-libs

5.5-41.el6_3.1

No

BSD

不适用

net-snmp-utils

5.5-41.el6_3.1

No

BSD

不适用

samba-client

3.5.10-125

No

GPLv2

不适用

samba-common

3.5.10-125

No

GPLv2

不适用

libsmbclient

3.5.10-125

No

GPLv2

不适用

squid

3.1.10-9.el6_3

No

GPLv2

不适用

lm_sensors

3.1.1-10

No

GPLv2

不适用

dmidecode

2.11-2

No

GPLv2

不适用

perl-DBI

1.609-4

No

GPLv2

不适用