80 --- 9000
88 --- 9001
worker_processes 16;
worker_rlimit_nofile 100000;
worker_connections 65535;
charset utf-8;
系统优化:
打开文件数量应该与这个有关
/etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
cat /proc/30835/limits
ulimit -a
修改后重新登录即可生效
apache优化:
top -d 1 | grep httpd
编译mod_proxy.so.
[[email protected] httpd-2.2.4]# cd modules
[[email protected] modules]# /usr/local/apache/bin/apxs -c -i mod_proxy.c proxy_util.c
/usr/local/apache/conf/httpd.conf
打开
# Server-pool management (MPM specific)
Include conf/extra/httpd-mpm.conf
/usr/local/apache/conf/extra/httpd-mpm.conf
MaxClients n1
nSpareThreads n2
MaxSpareThreads n3
ThreadsPerChild n4
MaxRequestsPerChild n5
实例:
<IfModule mpm_prefork_module>
ServerLimit 10000
StartServers 256
MinSpareServers 64
MaxSpareServers 192
MaxClients 10000
MaxRequestsPerChild 0
</IfModule>
当Apache启动时,Apache会启动StartServers个空闲进程同时准备接收处理请求,当多个请求到来时,StartServers进行会越来越少,当空闲进程减少到MinSpareServers个时,Apache为了能够继续有充裕的进程处理请求,它会再启动StartsServers个进程备用,这样就大大减少了请求队列等待的可能,使得服务效率提高,这也是为什么叫做Pre-fork的原因;让我们继续跟踪Apache的工作,我们假设Apache已经启动了200个进程来处理请求,理论上来说,此时Apache一共有205个进程,而过了一段时间,假设有100个请求都得到了Apache的响应和处理,那么此时这100个进程就被释放成为空闲进程,那么此时Apache有105个空闲进程。而对于服务而言,启动太多的空闲进程时没有任何意义的,反而会降低服务器的整体性能,那么Apache真的会有105个空闲进程么?当然不会!实际上Apache随时在检查自己,当发现有超过MaxSpareServers个空闲进程时,则会自动停止关闭一些进程,以保证空闲进程不过过多。说到这里,用户应该对Apache的工作方式有了一定的了解,如果想获得更多更详细的说明请参阅Apache手册文档。
测试apache配置是否正确
./apachectl configtest
修改/usr/local/apache/conf/httpd.conf
添加:
hostnamelookups off
timeout 5
keepalive on
maxkeepaliverequests 1000
keepalivetimeout 10
serversignature off
servertokens prod
默认情况下,很多apache安装时会显示版本号及操作系统版本,甚至会显示服务器上安装的是什么样的apache模块。这些信息可以为黑客所用,并且黑客还可以从中得知你所配置的服务器上的很多设置都是默认状态。
所以,请加入如下两条:
serversignature off
servertokens prod
serversignature 出现在apache所产生的像404页面、目录列表等页面的底部。
servertokens目录被用来判断apache会在server http响应包的头部填充什么信息。
如果把servertokens设为prod,
那么http响应包头就会被设置成:server:apache
#禁止在内存中缓冲日志(mod_log_config)
BufferedLogs Off
修改:
options -followsymlinks
符号连接:当打开这个选项时,apache将检查每个请求中是否包含对符号连接的引用,
这将对请求中包含的每个路径调用一次lstat()系统调用。除非你准备使用符号连接,
否则用 options -followsymlinks 来关掉它。
php.ini 优化
修改部分
max_execution_time 一个脚本可使用多少 CPU 秒 30
max_input_time 一个脚本等待输入数据的时间有多长(秒) 60
display_errors = Off
error_log = /var/log/php_log
memory_limit 在被取消之前,一个脚本可使用多少内存(字节) 32M
session.save_path = "/tmp" 去掉注释
output_buffering 数据发送给客户机之前,有多少数据(字节)需要缓存 4096
output_buffering = 0
; 输出缓冲区大小(字节)。建议值为4096~8192。
; 输出缓冲允许你甚至在输出正文内容之后再发送HTTP头(包括cookies)。
; 其代价是输出层减慢一点点速度。
; 设置输出缓冲可以减少写入,有时还能减少网络数据包的发送。
; 这个参数的实际收益很大程度上取决于你使用的是什么Web服务器以及什么样的脚本。
disable_functions = passthru,exec,shell_exec,system,phpinfo,get_cfg_var,popen,chmod
参考资料
http://www.ibm.com/developerworks/cn/linux/l-tune-lamp-2.html
http://lamp.linux.gov.cn/PHP/php-5_2-ini.html
testab -n 2000 -c 2000 http://socialmovie.innisfree.cn/main_innisfree.php
参考文章
http://blog.csdn.net/gulaizi/article/details/4012049
http://fanqiang.chinaunix.net/app/web/2007-02-08/5087.shtml
http://bbs.linuxtone.org/thread-40-1-1.html
apache缓存
http://bbs.linuxtone.org/forum.php?mod=viewthread&tid=1670
--enable-cache dynamic file caching
--enable-disk-cache disk caching module
--enable-mem-cache memory caching module
缓存动态内容
<IfModule mod_cache.c>
CacheForceCompletion 100
CacheDefaultExpire 3600
CacheMaxExpire 86400
CacheLastModifiedFactor 0.1
<IfModule mod_disk_cache.c>
CacheEnable disk /
CacheRoot /home/wwwroot/
CacheSize 327680
CacheDirLength 4
CacheDirLevels 5
CacheGcInterval 4
</IfModule>
<IfModule mod_mem_cache.c>
CacheEnable mem /
MCacheSize 8192
MCacheMaxObjectCount 10000
MCacheMinObjectSize 1
MCacheMaxObjectSize 51200
</IfModule>
</IfModule>
参数的解释
mod_cache.c
CacheEnable: 启动mod_cache其后接两个参数。第一个参数指定快取的种类,应设为mem(记忆体快取)或disk(磁碟快取)之其一;第二个参数指定使用快取的URI路径,如果对整个网站(或虚拟主机)进行快取,简单指定为根目录(/)即可。
CacheForceCompletion: 指定当 HTTP request 被取消时,内容的产生动作要完成的百分比;预设是 60(%)。
CacheDefaultExpire: 指定快取的预设过期秒数;预设值是一小时 (3600)。
CacheMaxExpire: 指定快取最大的过期秒数;预设值是一天 (86400)。
CacheLastModifiedFactor: 用来从回应里 Last Modified 资讯算出 expire date。
mod_disk_cache.c
CacheRoot: 指定磁碟快取所使用的目录。
CacheSize: 指定快取使用的磁碟空间大小;以 KByte 为单位。
CacheDirLength: 指定各目录存在于快取?层(hierarchy) 中所使用的字元数。
CacheDirLevels: 指定快取的目录层数; CacheDirLength,acheDirLevels设定值相乘不能超过 20。
CacheGcInterval: 指定收垃圾 (Garbage Collection) 的动作间隔时间;单位是小时。Apache2 中这个指令还?有被实在。
mod_mem_cache.c
MCacheMaxObjectCount 最大缓存对象数;默认值1009。
MCacheMaxObjectSize 缓存允许的最大文档大小;默认值10000。
MCacheMaxStreamingBuffer 内存中允许缓冲的最大流式响应字节长度;默认值100000与MCacheMaxObjectSize中的小者。
MCacheMinObjectSize 允许缓存的最小文档大小;默认值 0。
MCacheRemovalAlgorithm 定义在需要时哪个文档被移出缓存的算法;默认值 LRU|GDSF。
MCacheSize 允许使用的最大内存量;以KB为单位默认值100。