Archive

Posts Tagged ‘lamp’

Linode优化LAMP配置

September 1st, 2009 Wei 7 comments

我的网站在经过2周左右的测试后,正式决定搬家到Linode。受经济和访问量等因素的综合考虑,我选择了最便宜的VPS方案(Linode 360:360MB内存,16GB存储空间,200GB月流量)。

操作系统上,我选择了Debian 5.0 (Lenny) 64bit。原因是Debian和我常用的Debian/Ubuntu系统最为贴近,安装、配置、管理都比较得心应手。至于64bit和32bit,简单一句话就是,64bit应用会相对更快一些,但也占用了更多的内存(例如一个int在32bit系统中占用4bytes,而在64bit系统中则占用8bytes)。

与很多采用Linode 360方案的人不太一样,我并没有使用传说更加高效的NgineX,而是使用了比较传统的LAMP结构。这样的代价是对于内存的消耗更加苛刻,而优点则是更加传统、经典、久经考验的Apache方案。

正是基于这些原因,我经过大约2周时间的调试,总结出针对我的个人网站来说比较合理的配置方案。

首先是Apache的配置(/etc/apache2/apache2.conf):

KeepAlive                On
MaxkeepAliveRequest      20
MaxKeepAliveTimeOut      25

<IfModule mpm_prefork_module>
    ServerLimit          30
    StartServers          3
    MinSpareServers       3
    MaxSpareServers       7
    MaxClients           20
    MaxRequestsPerChild 500
</IfModule>

接下来是PHP的配置(/etc/php5/apache2/php.ini):

max_execution_time = 180
max_input_time = 60
memory_limit = 64M
error_reporting  = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
register_globals = Off

最后是MySQL的配置(/etc/mysql/my.conf):

key_buffer              = 16K
max_allowed_packet      = 3M
thread_stack            = 64K
thread_cache_size       = 8
table_cache             = 3
query_cache_limit       = 1M
query_cache_size        = 16M
#skip-innodb

经过上述配置,在我的网站上,剩余物理内存空间基本能达到100MB左右,即使是峰值流量,也基本不会出现OOM了。