Apache 性能优化几则

有点标题党了,称不上是性能优化,只能算是在日常工作遇到的某些问题及解决方案;目的旨在提升网站运行效率。
本文涉及Apache 日志处理、查看服务器运行状态、服务器信息、及访问控制(只是皮毛)。

如果你也遇到此类问题,我想本文会给你些参考,你可以从这些方面着手处理。

近日公司的网站首页打开超慢,在15秒左右,晕死,不知道怎么回事……没办法的事,只能硬着头皮来处理这事。(注:公司是网站、数据库分离的。)

排查原因
于是便从:
1、网站程序
2、数据库
3、Apache 负载
这三处一一排查,写了一个PHP运行时间检测的程序(太垃圾就不放出来了),发现读取数据库处太慢了,是他占用了绝大部分时间。于是向数据库人员反馈,并提供慢查询的SQL及存储过程。
数据库人员处理后,网站称不上是秒开,也在3秒左右……

日志处理
查看Apache运行日志的时候,发现日志有1个G了,上帝,应该对日志进行拆分处理避免文件过大。

参照方法在 Apache日志分割的3种方法,使用,rotatelogs 每天一个日志文件按周循环写入。

rotatelogs 写入日志时,如果虚拟机数量太多则生成N多个rotatelogs进程,我这里因为使用的是Oracle数据,造成连接时,报错提示:ORA-24408: 无法生成唯一的服务器组名,无法,暂时不使用rotatelogs记录日志;另外尝试重新启动Apache时,提示80端口被占用,无法,只能将进程中的,rotatelogs 结束掉才能启动。

另外,如果对每个虚拟机都应用 rotatelogs 写入日志的话,容易造成生成4倍于虚拟机数量的进程(像cmd、conhost、rotatelogs)。暂时不清楚原因。

性能优化
建议做的是,开启Gzip压缩、MPM处理,此类需要细细考量下。

参考文档及相关文档:

运行状态
通过开启 mod_status 模块 来查看Apache 运行状况。

参考文档:

配置信息
同 mod_status 一样,开启 info 模块,即可查看Apache配置信息。

参考Apache 手册:
Apache 手册  mod_info 模块 地址1地址2

但是,有利与有弊,容易造成狂飙CPU和狂吃内存(或许吧),所以,建议,在性能优化完毕后,关闭它。

访问控制
说说 Order Allow,Deny,以前看到它时老犯迷糊。这里介绍下本人通俗的理解:

像,

<Directory "d:/wamp/www/">
Order Allow,Deny # 定义访问顺序 先允许,后禁止
Allow from all # 允许 来自 所有 (即允许所有访问)
</Directory>

即,

<Directory "d:/wamp/www/">
定义访问顺序 规则1,规则2
规则1 from all
</Directory>

切记,规则间紧跟,(英文逗号)号,不能有空格!

如果只定义的访问顺序则没定义访问规则,像,Order Allow,Deny,则会以最后一个规则为准,即 Deny ,即禁止所有访问。相反亦是如此。

其他情况把,按顺序,执行定义的规则1和规则2就行,看结果就知道当前访问是否被允许。

像,
Order Deny,Allow # 定义访问顺序 先禁止 再允许
Deny from ip1 ip2 # 哦,禁止 ip1 和 ip2 访问,没 Allow(允许) 规则?那就只禁止ip1 ip2访问

或者

Order Allow,Deny # 定义访问顺序 先允许 再禁止
Allow from all # 允许所有人访问
Deny from ip1 ip2 # 不好意思,你是ip1 ip2的话,禁止访问

是等同的。

参看,Apache 手册 mod_authz_host 模块 地址1地址2

参考文档:

Apache 性能优化几则” 中有 2 条评论

评论已关闭。