欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

squid3加速web服务器

程序员文章站 2022-05-26 15:57:38
...

测试环境: 操作系统 :centos5.0 Web 服务器 :apache2 + tomcat 5.5 Jdk : j2se 1.5.5 1. 下载 squid-3.0.STABLE9.tar.gz (测试时最新的版本)。 http://www.squid-cache.org/Versions/v3/3.0/squid-3.0.STABLE9.tar.gz 2. 添加用户及组 # useradd squid -M

测试环境:

操作系统:centos 5.0

Web 服务器: apache2 + tomcat 5.5

Jdk : j2se 1.5.5

1. 下载squid-3.0.STABLE9.tar.gz (测试时最新的版本)。

http://www.squid-cache.org/Versions/v3/3.0/squid-3.0.STABLE9.tar.gz

2. 添加用户及组

# useradd squid -M -c "Squid user" -d /dev/null -s /sbin/nologin

3. 解压并编译安装

tar squid-3.0.STABLE9.tar.gz

cd squid-3.0.STABLE9

./configure --prefix=/data/squid3 --disable-carp --with-aufs-threads=32 --with-pthreads --enable-storeio='ufs,aufs, null' --enable-disk-io='AIO,Blocking' --enable-removal-policies='heap,lru' --disable-wccp --enable-kill-parent-hack --disable-snmp --disable-poll --disable-select --enable-auth=basic --with-aio --disable-ident-lookup --with-filedescriptors=65536

编译参数不做详细介绍请查相关文档

Make

make install

安装完毕。

4. 配置

可能需要创建一些文件 这些都是配置文件中需要调用的(这个要注意文件的属主和权限)

1) [root@www ~]#cd /data/squid3/var/logs/

2) [root@www ~]#touch cache.log

3) [root@www ~]#chmod 755 cache.log

4) [root@www ~]#chown squid:squid cache.log

5) [root@www ~]#touch page_zs_access_log

6) [root@www ~]#chmod 755 page_zs_access_log

7) [root@www ~]#chown squid:squid page_zs_access_log

8) [root@www ~]#cd /data/squid3/etc/

9) 配置squid 配置文件 squid.conf

[root@www ~]# vi squid.conf (192.168.3.11 服务器ip 地址)

visible_hostname www.test.com

http_port 80 vhost vport

cache_mem 512 MB

maximum_object_size_in_memory 2048 KB

memory_replacement_policy lru

cache_dir ufs /tmp 512 16 256

max_open_disk_fds 0

minimum_object_size 0 KB

maximum_object_size 32768 KB

logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %h" "%{User-Agent}>h" %Ss:%Sh

access_log /data/squid3/var/logs/page_zs_access_log combined

pid_filename/data/squid3/var/logs/squid.pid

cache_store_log none

cache_peer 192.168.3.11 parent 81 0 no-query no-digest originserver name=www

cache_peer_domain www www.test.com

cache_peer_access www allow all

http_access allow all

acl QUERY urlpath_regex cgi-bin .php .cgi .avi .wmv .rm .ram .mpg .mpeg .zip .exe

cache deny QUERY

cache_effective_user squid

cache_effective_group squid

10) [root@www ~]#/data/squid3/sbin/squid -k parse

可以根据这个测试命令用来验证squid.conf 的语法和配置(下面是OK 的如果不OK 会有相应的提示根据提示来修改配置文件)

2008/10/14 21:14:56| Processing Configuration File: /data/squid3/etc/squid.conf (depth 0)

11) [root@www ~]#/data/squid3/sbin/squid -z

用来创建缓存目录

12) vi 一个squid.sh 的启动脚本如下:赋予可执行权限

[root@www ~]#vi squid.sh

#!/bin/sh

#

ulimit -HSn 15000

# this script starts and stops Squid

echo 15000 > /proc/sys/fs/file-max

case "$1" in

start)

/data/squid3/sbin/squid -s

echo -n ' Squid'

;;

stop)

/data/squid3/sbin/squid -k shutdown

;;

esac

#chmod +x squid.sh

5. 启动squid

[root@www ~]#./squid.sh start 就可以启动squid

查看有没有启动可以

[root@www ~]#ps fax|grep squid

13750 pts /3 S+ 0:00 \_ grep squid

30474 ? Ss 0:00 /data/squid3/sbin/squid -s

30476 ? S 0:01 \_ (squid) -s

通过命令lsof -i:80 查看谁占用了80 端口

查看squid 的访问日志。

[root@www ~]# tail f /data/squid3/var/logs/page_zs_access_log

查看命中率及其他相关信息

[root@www ~]# /data/squid3/bin/squidclient -p 80 -h localhost mgr:info

HTTP/1.0 200 OK

Server: squid/3.0.STABLE9

Mime-Version: 1.0

Date: Tue, 14 Oct 2008 13:22:40 GMT

Content-Type: text/plain

Expires: Tue, 14 Oct 2008 13:22:40 GMT

Last-Modified: Tue, 14 Oct 2008 13:22:40 GMT

X-Cache: MISS from www.6558855.com

Via: 1.0 www.6558855.com (squid/3.0.STABLE9)

Connection: close

Squid Object Cache: Version 3.0.STABLE9

Start Time: Tue, 14 Oct 2008 11:25:50 GMT

Current Time: Tue, 14 Oct 2008 13:22:40 GMT

Connection information for squid:

Number of clients accessing cache: 2

Number of HTTP requests received: 772

Number of ICP messages received: 0

Number of ICP messages sent: 0

Number of queued ICP replies: 0

Number of HTCP messages received: 0

Number of HTCP messages sent: 0

Request failure ratio: 0.00

Average HTTP requests per minute since start: 6.6

Average ICP messages per minute since start: 0.0

Select loop called: 7081542 times, 0.990 ms avg

Cache information for squid:

Hits as % of all requests: 5min: 0.0%, 60min: 89.7%

Hits as % of bytes sent: 5min: -0.0%, 60min: -0.0%

Memory hits as % of hit requests: 5min: 0.0%, 60min: 0.0%

Disk hits as % of hit requests: 5min: 0.0%, 60min: 0.0%

Storage Swap size: 104 KB

Storage Swap capacity: 0.0% used, 100.0% free

Storage Mem size: 228 KB

Storage Mem capacity: 0.0% used, 100.0% free

Mean Object Size: 10.40 KB

Requests given to unlinkd: 68

Median Service Times (seconds) 5 min 60 min:

HTTP Requests (All): 0.00000 0.00000

Cache Misses: 0.00000 0.00000

Cache Hits: 0.00000 0.00000

Near Hits: 0.00000 0.00000

Not-Modified Replies: 0.00000 0.00000

DNS Lookups: 0.00000 0.00000

ICP Queries: 0.00000 0.00000

Resource usage for squid:

UP Time: 7009.125 seconds

CPU Time: 0.948 seconds

CPU Usage: 0.01%

CPU Usage, 5 minute avg: 0.00%

CPU Usage, 60 minute avg: 0.01%

Process Data Segment Size via sbrk(): 2968 KB

Maximum Resident Size: 0 KB

Page faults with physical i/o: 2

Memory usage for squid via mallinfo():

Total space in arena: 3240 KB

Ordinary blocks: 3194 KB 17 blks

Small blocks: 0 KB 0 blks

Holding blocks: 11472 KB 17 blks

Free Small blocks: 0 KB

Free Ordinary blocks: 45 KB

Total in use: 14666 KB 100%

Total free: 45 KB 0%

Total size: 14712 KB

Memory accounted for:

Total accounted: 3001 KB 20%

memPool accounted: 3001 KB 20%

memPool unaccounted: 11710 KB 80%

memPoolAlloc calls: 147106

memPoolFree calls: 145713

File descriptor usage for squid:

Maximum number of file descriptors: 15000

Largest file desc currently in use: 14

Number of file desc currently in use: 8

Files queued for open: 0

Available number of file descriptors: 14992

Reserved number of file descriptors: 100

Store Disk files open: 0

Internal Data Structures:

45 StoreEntries

41 StoreEntries with MemObjects

40 Hot Object Cache Items

10 on-disk objects

6. 关于动态页面的缓存。

jsp 页面。

利用Headerjsp 服务器减压

在参与缓存的jsp 中加入如下程序,进行“Last-Modified ”和“Expires ”的设置;

long file_lmodified = new File("/tmp/catchmodified".lastModified();

response.setBufferSize(16);

response.setDateHeader("Last-Modified", file_lmodified);

response.setDateHeader("Expires", System.currentTimeMillis() / 1000 * 1000 + 300000);

response.flushBuffer();

%>

7. 添加自动更新记时方式

[root@www ~]# vi refreshCatch.sh

#/bin/sh

/bin/echo >/tmp/catchmodified

Chmod +x refreshCatch.sh

然后在crontab 里写一句

*/5 * * * * /data/squid3/refreshCatch.sh