根据nginx的文档,可以通过使用expires 指令来操作。
该指令会在响应的header信息中增加一个 Expires 和一个 Cache-Control: (如果时间是负数no-cache,反之max-age = * 为您指定时间的秒数)的信息.如果不想缓存某些页面,可以针对某些页面配置以下expires ,可以用 expires -1;使用这样就相当于为指定的资源在响应请求时在header中加了Cache-Control:no-cache 信息.
经过测试,在IE6和8下都能正常工作,即每次通过F5刷新,应答的状态码都为200,但是Firefox3.6、chrome下,F5刷新后看到的应答状态码为304,也就是说依然读取的是缓存信息,没有达到不缓存的目的,使用FireBug(好工具啊)查看响应的header信息中也有Cache-Control:no-cache,这问题让我困扰好一阵,在网上狂找一起,也没有发现到底是为什么。后来无意中在IE8下的httpwatcher5下看到了一个warnning信息,内容为:The ‘no-cache’ directive was used without the ‘no-store’ directive. Using ‘no-store’ ensures that Firefox will always re-fetch HTTP based pages and never use a previous version.从这个里面得到启示,然后再nginx中使用add_header增加一条add_header Cache-Control no-store指令,然后再测试,Firefox,chrome的应答都能不让客户端缓存。进一步测试,发现只要设置了no-store,不要no-cache,甚至 expires 时间为正数时都不会被缓存了。
add_header Cache-Control no-store
另外如果先前页面已经是缓存的,在nginx配置中设置了不缓存(no-store),也重启nginx服务器,在ie下,用F5刷新还是返回304,除非ctrl+F5应答才会是200,当然此后再F5依旧是200。如果要立即生效,最好是修改一下那个页面,让浏览器知道页面已经被更新,好重新获取页面内容。
rsync可以让两个目录的内容一致,它同步只会同步有更新过的文件,减少传输量。可以是本机上的两个目录,也可以是本机的目录同步到服务器上,还可以是把服务器上的目录同步到本机上。
基本命令是 rsync 命令的参数 源目录 目的目录
rsync可以基于ssh协议来做,这样就省去了很多配置rsync server的麻烦,如果两个机器已经实现ssh无密码登陆,那么rsync就会提示输入密码,还有一种是通过密钥文件来实现免密码,例如下面
1、rsync -vzrtopg –progress -e ssh –delete 用户名@服务器IP:/var/www/dirA/ /var/bak/
2、rsync -vzrtopg –progress -e “ssh -i /path/pwd.pem” –delete 用户名@服务器IP:/var/www/dirA/ /var/bak/
就是把服务器上的dirA目录同步到本地的/var/bak目录下,其中方法1是用户已经做了ssh免密码登陆,方法2是通过密钥(存放在/path 下的pwd.pem文件)来同步
由于服务器只有600M的内存,上面跑了一个并发并不是很大的php应用,当运行一段时间后,发现内存不断增长,其中一部分是PageCache的增长, 这个可以通过echo 3 > /proc/sys/vm/drop_caches 命令来进行有效的释放,另外一个应用内存的增长,且无法释放,通过top命名(输入命名后按m键可按进程占用内存大小的排序)查看,发现大部分内存都被 php-fpm 占用,网上查了一下,大概的意思是说,处理每个php请求完成后,php-fpm会回收内存,但不会释放给操作系统,从而导致大量的内存被php-fpm 占用。网上也提到解决方法,就是调整php-fpm.conf中的pm.max_requests值,pm.max_requests的作用是发送多少个 请求后会重启该线程,从而使其释放占用的内存,默认0,即决不重启。在我的应用把该值设置为250,观察一段时间后,发现还是有好几个php-fpm占用 内存的比例是2.8%左右,效果不理想,可能的原因是请求量大,还是无法达到这个阀值,将其设置为10的时候,发现php-fpm是会不断的重启的。个人 感觉这样配置不是太好,所有还是把这个值置为250,同时用一个脚本来进行杀掉php-fpm,从而释放他占用的内存,另外如果系统负载巨大,重启会导致 cpu的使用率飙升。脚本如下:
#!/bin/bash
log=/home/www/scripts/php-fpm.log
echo `date “+%F %H:%M:%S”` >> $log
for PID in `ps aux|grep php-fpm|grep -v grep|awk ‘{if($4>=1)print $2}’`
do
kill -9 $PID
echo $PID >> $log
done
可以把脚本加到crontab中让其定期执行.
另外记录几个长用的命令:
1、按顺序列出内存占用率的进程 ps -A –sort -rss -o comm,pmem,pcpu |uniq -c |head -15
2、指令vmstat可以监控内存使用情况,作为对内存监控,我们比较关心swpd、free、si、so。一般系统不繁忙的状态下,我们看到swpd,so的值不会持续很高,经常为0
3、通过pmap来查看进程占用内存的详细情况,例如,pmap 进程号
本 文参考了:http://blog.csdn.net/zouyongjin/article/details/6642157和http: //www.opsers.org/linux-home/server/php-fpm-on-analysis-of-system-resources.html