服务器和网站类

IE一个有趣的功能-把10进制数转换为IP地址

不小心把一串数字拷贝进了IE地址栏然后回车,发现自动转到了一个IP地址.我想是不是IE自动换算的能? 于是把本站的IP地址98.143.155.188换算为16进制

98 –> 62

143-> 8F

155-> 9B

188-> BC

然后再把0x628F9BBC换算为十进制 1653578684, 输入地址栏,回车,bingo,自动转到了IP地址98.143.155.188.

Apache优化限制内存占用,防止当机

本文是专题:建站日记中的第7篇,共10篇

Linux Apache服务器架构应该以稳定著称, 前一篇日志提到有人抱怨soso spider把自己的网站搞死了,这个其实不能全怪spider.想想看,如果有足够多的用户,正常访问网站,人多的像soso的spider一样,apache也不可能挂了? 关键在于Apache配置, 以及配置之后一定要进行压力测试.。

先说说配置, 第一是不要加载不必要的apache模块, 这样可以限制每个进程的内存占用量(对prefork而言,worker没用过,因为php的原因). 然后就要注意下面这个性能配置部分。

View Code MYSQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<ifmodule prefork.c="">          
	# number of server processes to start           
	# http://httpd.apache.org/docs/2.2/mod/mpm_common.html#startservers  	
	# 服务器启动时,产生的服务进程         
	StartServers       8          
	# minimum number of server processes which are kept spare          
	# http://httpd.apache.org/docs/2.2/mod/prefork.html#minspareservers  	
	# 系统空闲态,至少要保留的服务进程数,也就是相当于,饭店里没人吃饭,也要至少站6个服务员等顾客来         
	MinSpareServers    6          
	# maximum number of server processes which are kept spare          
	# http://httpd.apache.org/docs/2.2/mod/prefork.html#maxspareservers  	
	# 系统空闲态,至多保留的服务进程数,也就是相当于,饭店里要是没有顾客,数一数站着没事的服务员,多于10个的话,就是让他们放假回家.         
	MaxSpareServers    10          
	# highest possible MaxClients setting for the lifetime of the Apache process.          
	# http://httpd.apache.org/docs/2.2/mod/mpm_common.html#serverlimit  	
	# 服务器允许配置的进程数上限,设置了MaxClients最大允许配置的数值.必须重启服务器才生效的值.         
	ServerLimit       40          
	# maximum number of server processes allowed to start          
	# http://httpd.apache.org/docs/2.2/mod/mpm_common.html#maxclients  	
	# 服务器允许连接的进程数上限,也就是饭店里正常情况下最大允许进入的人数.此值不需要重启服务器即可修改生效,但不能超过ServerLimit,及时配置超过,也只能最大运行ServerLimit个进程. 
       	MaxClients        20          
	# maximum number of requests a server process serves          
	# http://httpd.apache.org/docs/2.2/mod/mpm_common.html#maxrequestsperchild          
	MaxRequestsPerChild  10000  
</ifmodule>

关于其他参数,就搜索一下吧,我就不再重复了.

关键在于,一定要测试自己服务器的负载,是不是能承受的住最糟糕的情况. 使用命令:

ab2 –n 1000 –c 100 http://yourdomain.com/index.php

这条命令模拟并发连接数为100的情况,而上面的配置最大只允许20个并发,所以有一些请求会在队列里等待服务,但不会耗光你的内存。你可以尝试加大自我攻击的力度,如果服务器在这样糟糕的情况下还能剩余一些内存,系统就肯定不会崩溃。 请注意,这里说的内存是物理内存,别把swap算进来。一旦用上swap,因为硬盘的速度和内存无法相提并论,造成服务器的响应就会非常慢。这时候应该减小MaxClients到自己能承受的值。

腾讯搜搜的网络爬虫真的很贱很讨厌哎

刚刚查看博客后台的安全日志,发现有相似的IP在特定时间间隔内访问我的后台登录页面。联想到最近的Google风波,我一下敏感起来,我被暴力攻击了?

首先,反向解析了几个IP,发现都是深圳的。然后google了一下,原来很多站长早已经对这些IP恨之入骨了,这就是来自腾讯搜搜的网络爬虫。腾讯搜搜的网络爬虫真是臭名昭著,有人被它短时间的大量并发访问把apache搞挂的,有人被它不停的访问造成的高负载而被服务商关站的,也有人就是看他不爽。大家基本上都会选择把它屏蔽了。我也这么做了。

具体的,腾讯搜搜的高危IP列表入下:

58.61.164.38
58.61.164.39
58.61.164.40
58.61.164.41
58.61.164.42
58.61.164.138
58.61.164.139
58.61.164.140
58.61.164.141
58.61.164.142
58.61.164.143
58.61.164.200
58.61.164.201

也有人直接对58.61.164整个号段下手屏蔽了,呵呵。

可以使用在 .htaccess文件中或者在apache配置文件中使用:

Order allow,deny
deny from 58.61.164.
Allow from all

来把该IP号段屏蔽,可以把上面给出的IP一个一个deny掉.这个功能是在apache2中是mod_authz_host模块提供的,该模块的说明中还提到了更多精细控制的说明,可以阅读参考手册得到更多信息.

最后说, 搜搜的spider贱,就在于,它疯狂的扫站,竟然却不收录,哎,无语了. 拜托搜搜的研发人员,如果自己水平不够好,就不要自己写搜索引擎了,用几个开源的spider也行啊.