Apache性能调节(摘自于Apache经典实例)
16lz
2021-01-22
1、决定需要多少内存 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
在进程列表中找出Apache的实例,并决定运行Apache进程平均所需的内存容量然后将此数量与可同时服务的客户端的最大数目相乘。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
折腾一阵,也没能在linux下算出我的apache所需的内存数量。需要再接再厉。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2、 | 以ab来测试Apache的性能 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
运行ab程序如下: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ab -n 1000 -c 10 http://xxxx/test.html | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
未在实际环境中运行测试。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
模拟测试只能一定程度上反映服务器的性能。能够获得系统性能是否真的提升了,但不能反映真实的用户的真实行为。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3、调节保持连接的设定 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
启用KeepAlive On指令。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
使用KeepAlive可在单一连接时进行多个请求。也就是持续连接。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MaxKeepAliveRequests指令在单一连接时间内可允许多少个保持连接的请求。当该值为0时,表示在单一连接时间允许不限数目的请求。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
KeepAliveTimeout指定在没有接受其他请求时,会持续开启特定连接的时间。此指令的最佳设定完全视网站特性而定。在KeepAlive过期前,用户 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
访问下一网页时会在同一连接中获得该文件。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4、取得网站活动的快照 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
想准确地知道服务器正在做什么事。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
启用server-status处理器来取得子进程在运行的快照。启用ExtendedStatus来取得更详细的信息: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<Location /server-status> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SetHandler server-status | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
</Location> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ExtendedStatus On | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
可在 URL http://servername/server-status上查看结果 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
启用 mod_status 模块所提供的server-status处理器可以提供服务器活动快照。可获得信息:上次重启动时间、服务器已运行多久、该时间段内已经服务 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
的数据量、子进程及其作用的列表。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
上述结果可能包含一些不想被其他用户了解的信息,故需要设定只允许从xxx.xxx.xxx.xxx或其他设定的网络来访问,拒绝未获授权的因特网用户访问。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
做到特定用户访问,需要加入如下内容: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Order deny, allow | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Deny from all | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Allow from xxx.xxx.xxx.xxx | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
但需要加在何位置呢?猜想,这里只对 server-status起作用,应写在 <Location /server-status> </Location>之间。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5、避免DNS查询 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
避免必须以DNS来查询客户端地址的情况。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
将HostNameLookups 设置为Off | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
HostNameLookups Off | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
确定所有Allowfrom 或 Deny from指令使用IP地址而非主机名称。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
理由:当Allow from 与 Deny from指令进行以主机名称为基准的访问控制时,Apache会采取另外的预防措施以确保客户端不会送出假的主机名称。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
它会替客户端的IP地址进行DNS查询以获得主机名称,并与访问限制对比。为了确定DNS记录不是假造的,它会查询所获得的主机名称。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
问题:怎样的设置会使allow 与 deny from使用IP地址而不是主机名呢?反之呢?需要验证一下。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
问题:怎样设置假的主机名呢? | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
6、最佳化符号链接 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
什么是符号链接?他又怎么影响系统性能了? | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
书上说:为了启用最严格的安全防护,如果很少(甚至从不)使用符号链接,请使用Options SymLiksIfOwnerMatch或Options -FollowSymLinks。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
为了有最佳的性能,请使用Options FollowSymLinks。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
7、降低.htaccess文件对性能的影响 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
只在必要的目录中启用AllowOverride,告诉Apache不要浪费时间在别的位置查找.htaccess文件 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
AllowOverride None | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
然后在<Directory>区块启用必要的.htaccess文件。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
因为Apache配置指令不仅应用到所设定目录,也包含所有子目录。因此必须检查父目录以及当前目录中的.htaccess文件。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
在.htaccess中出现的任何设定都可以出现在引用同一目录的<Directory>区块中。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
只在必要的特定目录中启用。例如: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/www/htdocs/user/leopold/的目录中启用.htaccess文件,则应该只让此目录使用.htaccess | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<Director /www/htdocs/users/leopold> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
AllowOverride All | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
</Directory> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
注意点:在.htaccess文件中可使用的指令种类会非常特殊,而且应该只使用真正需要的指令。即应该使用必要的特定指令,而非All参数。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
尤其尽可能避免使用AllowOverride的Options参数,因为它可以让用户重新启动为了安全防护而停用的功能。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
问题:AllowOverride的Options参数是什么?怎么他就“它可以让用户重新启动为了安全防护而停用的功能?” | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
8、停用网页内容协商 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
网页内容协商会严重地降低性能。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
如果真的需要使用网页内容协商,请使用type-map处理器而非Multiviews选项: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Options -Multiviews | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
AddHandler type-map var | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
当使用MultivViews时,每次送出请求时,Apache都需要取得目录列表。所请求的资源会与目录列表对比,以查看该资源是否还有其他语言的版本。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
如果所请求的是index.html,则index.html有index.html.fr也会满足该请求。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
通过将信息放入.var文件并改为type-map处理器,可以不城朵取得目录列表,并大幅减少apache在决定传送给用户的正确版本时的必要工作量。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
例如:如果有index.html的英文、法文或其他文版本,可以编写名为index.html.var的var文件,其中包含各种版本的相关信息。文件内容如下: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
URI: index.html.en | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content-language:en | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content-type:text/html | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
URI:index.html.fr | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Contents-language:en | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Contents-type:text/html | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
此文件必须和不同版本的资源(即index.html.en、index.html.fr及index.html.he.iso8859-8)放在同一目录中。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
更多相关文章
- find . -type f ! -name "*.o" 排除某类文件 排除多类文件 排除
- 来点基础的--诡异的极客们的符号--流、管道和文件的耦合
- Oracle:从SQL文件批量导入数据
- linux清空日志文件内容 比如log日志
- sql2008中如何收缩数据库日志文件
- sql2000 数据库文件突然丢失
- 关于NavicatPremium导入CSV文件乱码的问题
- 解决缺少sql头文件编译错误
- mysql通过复制data文件夹进行数据迁移