Archive for July 23rd, 2010

linux一些常用指令

1.按内存从大到小排列进程:
ps -eo “%C : %p : %z : %a”|sort -k5 -nr

2.查看当前有哪些进程;查看进程打开的文件:
ps -A ;lsof -p PID

3.获取当前IP地址(从中学习grep,awk,cut的作用)
ifconfig eth0 |grep “inet addr:” |awk ‘{print $2}’|cut -c 6-

4.统计每个单词出现的频率,并排序
awk ‘{arr[$1]+=1 }END{for(i in arr){print arr”\t”i}}’ 文件名 | sort -rn

5.显示10条最常用的命令
sed -e “s/| /\n/g” ~/.bash_history | cut -d ‘ ‘ -f 1 | sort | uniq -c | sort -nr | head Read the rest of this entry »

No Comments

varnish 2.x启动指令和配置

Varnish 2.0.3 has just been released. This release contains multiple changes, amongst them:

  • Support for backend timeouts
  • Multiple fixes in how we process ESI
  • restart in vcl_hit is now supported
  • Documentation has been updated
  • Expiry processing is now more scalable
  • The default session workspace is now 16k instead of 8k
  • More graceful handling of too many headers from the client or the server.
  • More expressive purges

之前一直使用的还是2.0的一个trunk的R2860版本,因为只有这个版本我从1.1.2升级上来以后没有慢的问题⊙﹏⊙。但是看着新版却一直不能用,实在是让人心里痒。于是抱着死磕到底的态度,在检查了n+1遍配置文件和修改启动参数重启了n+1遍Varnish以后终于找到了问题的所在,即启动参数的-w这个上面。那么这个参数是干什么用的呢?

    -w int[,int[,int]]           # Number of worker threads
                                 #   -w <fixed_count>
                                 #   -w min,max
                                 #   -w min,max,timeout [default: -w2,500,300]

可以看出这个参数是控制每个进程的线程数的,1.1.2版本的时候这个参数我配置的是-w30000,51200,10,貌似到了2.0版以后这个最小启动的线程数不能设定过大,于是在进行了几次调试以后最终将参数定为了-w5,51200,30

软件列表
pcre-8.02.tar.gz
varnish-2.1.tar.gz

软件存放位置
/data/software

安装过程
# /usr/sbin/groupadd www -g 48
# /usr/sbin/useradd -u 48 -g www www
# mkdir -p /data/vcache
# chmod +w /data/vcache
# chown -R www:www /data/vcache
# mkdir -p /var/log/varnish
# chmod +w /var/log/varnish
# chown -R www:www /var/log/varnish
# cd /data/software/pkg
# tar zxvf ../pcre-8.02.tar.gz
# cd pcre-8.02
# ./configure
# make && make install
# cd ..
# tar zxvf ../varnish-2.1.tar.gz
# cd varnish-2.1
# export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
# ./configure –prefix=/usr/local/varnish
# make && make install

编辑Varnish配置文件
# vi /usr/local/varnish/vcl.conf

backend webserver {
       set backend.host = “10.10.10.8″;
       set backend.port = “80″;
}

acl purge {
       “localhost”;
       “127.0.0.1″;
       “10.10.10.0″/24;
}

sub vcl_recv {
        remove req.http.X-Forwarded-For;
        set    req.http.X-Forwarded-For = client.ip;
        if (req.request == “PURGE”) {
               if (!client.ip ~ purge) {
                       error 405 “Not allowed.”;
               }
               lookup;
       }

       if (req.http.host ~ “(a|b|c).test.com”) {
               set req.backend = webserver;
              if (req.url ~ “\.(png|gif|jpg|swf|css|js)$”) {
                       lookup;
        }
               else {
                       pass;
               }
       }

       else {
               error 404 “Test Cache Server”;
               pipe;
       }
}

sub vcl_hash {
    set req.hash += req.url;
    if (req.http.host) {
        set req.hash += req.http.host;
    } else {
        set req.hash += server.ip;
    }
    hash;
}

sub vcl_pipe {
        set req.http.connection = “close”;
        #pipe;
}

sub vcl_hit {
        if (!obj.cacheable) {
                pass;
        }
       if (req.request == “PURGE”) {
               set obj.ttl = 0s;
               error 200 “Purged.”;
       }
        deliver;
}

sub vcl_miss {
       if (req.request == “PURGE”) {
               error 404 “Not in cache.”;
       }
}

sub vcl_fetch {
               set obj.ttl = 180s;
               #set    obj.http.X-Varnish-IP = server.ip;
               set    obj.http.Varnish = “Tested by Kevin”;
}

启动Varnish
# /usr/local/varnish/sbin/varnishd -n /data/vcache -f /usr/local/varnish/etc/varnish/default.vcl -a 10.10.10.8:80 -s file,/data/vcache/varnish_cache.data,50G -u www -w2,65536,60 -T 127.0.0.1:3600 -p thread_pool_min=200 -p thread_pool_max=4000 -p thread_pools=4 -p thread_pool_add_delay=2 -p listen_depth=4096 -p lru_interval=20

启动日志记录
#/usr/local/varnish/bin/varnishncsa -n /data/vcache -w /var/log/varnish/varnish.log &

No Comments