当缓存已满时,tproxy squid 桥非常慢

当缓存已满时,tproxy squid 桥非常慢

我在一台 8GB RAM 的快速服务器上安装了桥接 tproxy 代理。流量约为 60Mb/s。

当我第一次启动代理(缓存为空)时,代理工作得很好,但是当缓存已满(几个小时后)时,网桥变得非常慢,流量低于 10Mb/s,代理服务器变得无法使用。

有任何迹象表明可能会发生什么事吗?

我在用着:

  • Linux-2.6.30.10
  • iptables-1.4.3.2
  • squid-3.1.1

使用这些选项进行编译:

./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --localstatedir=/var/lib --sysconfdir=/etc/squid --libexecdir=/usr/libexec/squid --localstatedir=/var --datadir=/usr/share/squid --enable-removal-policies=lru,heap --enable-icmp --disable-ident-lookups --enable-cache-digests --enable-delay-pools --enable-arp-acl --with-pthreads --with-large-files --enable-htcp --enable-carp --enable-follow-x-forwarded-for --enable-snmp --enable-ssl --enable-async-io=32 --enable-linux-netfilter --enable-epoll --disable-poll --with-maxfd=16384 --enable-err-languages=西班牙语 --enable-default-err-language=西班牙语

我的squid.conf:

cache_mem 100 MB
memory_pools off

acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl localhost src ::1/128
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl to_localhost dst ::1/128

acl localnet src 10.0.0.0/8     # RFC1918 possible internal network acl
localnet src 172.16.0.0/12  # RFC1918 possible internal network acl
localnet src 192.168.0.0/16 # RFC1918 possible internal network acl
localnet src fc00::/7   # RFC 4193 local private network range acl
localnet src fe80::/10  # RFC 4291 link-local (directly plugged) machines

acl net-g1 src xxx.xxx.xxx.xxx/24

acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT

http_access allow manager localhost
http_access deny manager

http_access deny !Safe_ports

http_access deny CONNECT !SSL_ports

http_access allow net-g1

#from where browsing should be allowed
http_access allow localnet
http_access allow localhost

http_access deny all

http_port 3128
http_port 3129 tproxy

hierarchy_stoplist cgi-bin ?

cache_dir ufs /var/spool/squid 8000 16 256

access_log none

cache_log /var/log/squid/cache.log

coredump_dir /var/spool/squid

refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .

当缓存已满时我会遇到这个问题,但不知道是否是因为这个原因。

提前致谢,抱歉我的英语不好。

答案1

Roberto,这个 FS 的尺寸是多少?

我看到你使用了 8000。

cache_dir ufs /var/spool/squid 8000 16 256

文档指出,你必须减去 20%来自缓存可用的总空间。Wiki 指出应留出 10% 用于 OS 会计结构

无论怎样,留出一些自由空间都是安全的!

答案2

您是否达到了 conntrack 限制?cat /proc/sys/net/nf_conntrack_max 与 cat /proc/sys/net/netfilter/nf_conntrack_count - 增加最大值是安全的,代理通常会受到大型 conntrack 表的影响,因为旧的陈旧连接会挂起相当长的时间。这些问题可能表现为“随着时间的推移而变慢”,因为只有当表填满时才会出现问题,并且如果它的填充速度仅比清空速度稍快,则可能需要几个小时。

相关内容