保护apache不被搜索引擎爬虫拖垮

[ 2012-10-11 更新 ] 服务器又死过几次了,事实证明这招不是万能的。还需要继续深入研究。

搜索引擎爬虫偶尔会把服务器整个拖死(在此问候soso和baidu)。又不能直接屏蔽。天朝的蜘蛛经常不遵守robots.txt,还是得从apache直接控制一下。

1. 使用mod_limitipconn限制Apache的并发连接数。
网上大家传抄的那篇文章是针对apache 1.x的。针对apache 2,应该用mod_limitipconn-0.24.tar.bz

下载:http://dominia.org/djao/limit/mod_limitipconn-0.24.tar.bz2
安装说明:http://dominia.org/djao/limitipconn2-README
官网:http://dominia.org/djao/limitipconn2.html

2. 用mod_bw (mod_bandwidth) 控制带宽

官网:http://ivn.cl/2010/01/06/downloads-for-bandwidth-mod/#bandwidth
官方说明:http://legacy.ivn.cl/files/txt/mod_bw-0.92.txt
中文说明:http://www.discuz.net/thread-628231-1-1.html (可能有点过时,中文搜出来的都是这篇,至少是07年写的)

其他类似模块,直接这里搜吧。https://modules.apache.org/search.php

Apache 的prefork MPM和worker MPM

本文给出了一些具体设置数值。但没有考虑硬件情况。所以具体数值不够严谨,仅供参考各项设置含义。
另一篇文章中,给出了一个设置算法。计算出来的数值远远小于本文的建议。
见:http://dingxuan.info/blog/post/tuning-Apache-Prefork-MPM.php

Apache使用哪种MPM在在安装的时候可以用
–with-mpm={beos|worker|prefork|mpmt_os2|perchild|leader|threadpool}
安装之后可以用httpd -l命令看到。
MPM的进程模块有有很多种( 见Apache官方文档:http://httpd.apache.org/docs-2.0/mod/)。
今天我主要是比较一下prefork MPM和worker MPM 继续阅读Apache 的prefork MPM和worker MPM

Apache的PreFork MPM功能

首先我們來看有關於 MPM 的一些資料:
http://dz.adj.idv.tw/archiver/tid-214.html
在 MPM中, prefork 及 worker 是兩種不同的 multi-processing module, 在 apache 管方網站上分別有對這兩個 module 有深入的介紹:
http://httpd.apache.org/docs/2.0/mod/prefork.html
http://httpd.apache.org/docs/2.0/mod/worker.html 继续阅读Apache的PreFork MPM功能

Tuning the Apache Prefork MPM

Apache uses a set of values called the Prefork MPM to determine how many servers it will utilize and how many threads each server can process. Out of the box all Apache installations use the same values regardless of whether your server has 512Mb of RAM or 8Gb of RAM.  It is important that as the server administrator you configure these values to work with your server load.

The Apache Prefork MPM can be found in the Apache configuration file; usually /etc/httpd/conf/httpd.conf.  The default values are…


StartServers       2
MinSpareServers    3
MaxSpareServers    3
ServerLimit       75
MaxClients        75
MaxRequestsPerChild  1000

Each Directive taken from “http://httpd.apache.org/docs/trunk/mod/mpm_common.html” is detailed below. 继续阅读Tuning the Apache Prefork MPM

install mod_security2 on centos / redhat

This article assumes that you have installed a RedHat Enterprise or CentOS and not guaranteed to work, although we have tested on several CentOS 4.5 with success.
The first thing is make sure we have installed the libxml2 library, for it only have to do a search on our system, if installed normally. (XPC Note: Try “yum install libxml2-devel”) 继续阅读install mod_security2 on centos / redhat

安装cband控制apache流量

wget http://cband.linux.pl/download/mod-cband-0.9.7.4.tgz
tar xzvf mod-cband-0.9.7.4.tgz
cd mod-cband-0.9.7.4
./configure
make
make install

configure之前,可能提示没有apx2。需要先yum install httpd-devel。此时确保Testing.repo关闭。

The make install command should have added the mod_cband module to /etc/apache2/httpd.conf. Run

vi /etc/apache2/httpd.conf

and check if you find a line like this:

LoadModule cband_module       /usr/lib/apache2/modules/mod_cband.so

(If you don’t find this line, add it yourself.)