Apache/Nginx Cache Last-Modified、Expires和Etag相关工作原理

使用ETag和Expires调优web 服务器性能
正确使用Etag和Expires标识处理,可以使得页面更加有效被Cache。
在客户端通过浏览器发出第一次请求某一个URL时,根据 HTTP 协议的规定,浏览器会向服务器传送报头(Http Request Header),服务器端响应同时记录相关属性标记(Http Reponse Header),服务器端的返回状态会是200,格式类似如下:
HTTP/1.1 200 OKDate: Tue, 03 Mar 2009 04:58:40 GMTContent-Type: image/jpegContent-Length: 83185Last-Modified: Mon, 22 Nov 2010 16:29:24 GMTCache-Control: max-age=2592000Expires: Thu, 02 Apr 2009 05:14:08 GMTEta...

/proc/sys/fs/file-max VS ulimit -n

简单的说, max-file表示系统级别的能够打开的文件句柄的数量, 而ulimit -n控制进程级别能够打开的文件句柄的数量.
man 5 proc, 找到file-max的解释:
file-max中指定了系统范围内所有进程可打开的文件句柄的数量限制(系统级别, kernel-level). (The value in file-max denotes the maximum number of file handles that the Linux kernel will allocate).当收到”Too many open files in system”这样的错误消息时, 就应该曾加这个值了.
# cat /proc/sys/fs/file-max    4096    # echo 100000 > /proc/sys/fs/file-...

Debian下PostFix安装配置

本文使用Debian自带软件包架设使用系统用户,支持SMTP AUTH/POP3/IMAP的邮件系统,由于只是在单机上进行测试,所以本机安装了DNS服务器,对邮件域进行了解析,实际配置时DNS对邮件服务器非 常重要,为避免不必要的弯路,尽量在配置POSTFIX之前检查一下DNS配置是否正确。
配置过程:
1. 为了让系统尽量使用最新的安装包,推荐在进行安装各软件前先apt-get update;apt-get upgrade一下。否则还有可能引起软件安装的兼容性问题,我遇到过几次在安装任何软件时均提示在安装过程中需先卸载e...

nginx 405状态码解决

有项目需要提交POST到静态文件,但是nginx报405错误,对于这种情况的解释是,由于访问静态文件的时候只能使用GET方式,不能使用POST,因此呢,在nginx的返回信息中,在0.6.33版以后就增加了这么一个405错误状态码,意思就是,你不能用POST方式来请求静态文件,错了,要换个别的方法
尝试方法一
error_page 405 =200 @405;location @405{root /data/www/xok.la/;}
无法解决。
尝试方法二
location /welcome/{root /data/www/xok.la/;error_page 405 =200 /welcome/;}
解决。

...

利用HAProxy实现负载均衡

一.HAProxy 介绍
HAProxy是一个特别适用于高可用性环境的TCP/HTTP开源的反向代理和负载均衡软件。在7层负载均衡方面的功能很强大(支持cookie track, header rewrite等等),支持双机热备,支持虚拟主机,支持健康检查(通过patch可以支持ECV),同时还提供直观的监控页面,可以清晰实时的监控服务集群的运行状况。同时支持Linux 2.6内核中System Epoll,通过简化系统调用,大幅的提高了网络I/O性能。

Haproxy包括以下一些特征:
根据静态分配的cookie 分配HTTP请求
分配负...

ubuntu解决for: 2: Syntax error: Bad for loop variable

我的代码
#!/bin/bashfor (i=0;i<10;i++)doecho $idone
在redhat测试无问题,在Ubuntu下测试报错
for: 2: Syntax error: Bad for loop variable
解决:
sudo dpkg-reconfigure dash
在选择项中选No
从 ubuntu 6.10 开始,ubuntu 就将先前默认的bash shell 更换成了dash shell;其表现为 /bin/sh 链接倒了/bin/dash而不是传统的/bin/bash。ubuntu edgy是第一个将dash作为默认shell来发行的版本,这似乎是受了debian的影响。wiki 里面有官方的解释,https://wiki.ubuntu.com/DashAsBinSh,主要原因是dash更小,运行更快,还与POSIX...

mod_fcgid and timeouts

At work we use mod_fcgid to run php (libapache2-mod-fcgid from Debian to be exact). This makes php nice and fast, but more importantly, it runs each site’s php pages as that site’s user. However, if php scripts start running for a long time, we start seeing cryptic error messages in the browser (”Premature end of […]

...

Memcached 集群架构问题归纳

集群架构方面的问题
o memcached是怎么工作的?
o memcached最大的优势是什么?
o memcached和MySQL的query cache相比,有什么优缺点?
o memcached和服务器的local cache(比如PHP的APC、mmap文件等)相比,有什么优缺点?
o memcached的cache机制是怎样的?
o memcached如何实现冗余机制? �
o memcached如何处理容错的?
o 如何将memcached中item批量导入导出?
o 但是我确实需要把memcached中的item都dump出来,确实需要把数据load到memcached中,怎么办?
o memcached是如何做...

memcache一致性 hash 算法(consistent hashing)

consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出,目前在 cache 系统中应用越来越广泛;
1 基本场景
比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N 个 cache 上呢,你很可能会采用类似下面的通用方法计算 object 的 hash 值,然后均匀的映射到到 N 个 cache ;
hash(object)%N
一切都运行正常,再考虑如下的两种情况;
1 一个 cache 服务器 m down 掉了(在实际应用中必须要考虑这种情况),这样所有映射到 cache m 的...