我在一台 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 表的影响,因为旧的陈旧连接会挂起相当长的时间。这些问题可能表现为“随着时间的推移而变慢”,因为只有当表填满时才会出现问题,并且如果它的填充速度仅比清空速度稍快,则可能需要几个小时。