Home > Computer Science > Linode优化LAMP配置

Linode优化LAMP配置

Sep 1st, 2009 22:31:48 Leave a comment Go to 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了。

  1. January 29th, 2010 at 11:22 | #1

    还是nginx好,高效,占内存少,当然没apache顺手

  2. will
    April 10th, 2010 at 13:40 | #2

    hi,想请教一下,Linode 360 如果放wp,做全静态,大概能撑多少pv每天呢?

  3. April 11th, 2010 at 15:50 | #3

    @will , Linode 360+LAMP+WP,非常有限,很容易OOM。我没做过测试,但估计100 PV左右吧。因为我的blog大约就是这个级别,三天两头的OOM。

  4. will
    April 17th, 2010 at 16:52 | #4

    100pv ?? 100w??

  5. May 12th, 2010 at 17:30 | #5

    你确定只能100pv吗???

    那么来100个人不就down掉了啊。。。

  6. May 12th, 2010 at 21:11 | #6

    回LS两位,LAMP在mpm_prefork_module的情况下,真的性能挺差的,360MB内存,很容易就OOM了。

    真正的数据我没试验过,但100多个人同时访问,真的很可能就OOM了。你想,每个apache需要大概几M的内存,每个访问者都fork出新的进程,真没多少。

    但LAMP的mpm_workder_module没试过,毕竟和nginx一样,不用fork了

  7. June 3rd, 2010 at 17:04 | #7

    同一秒100个人是不好说,一般是计算大概15分钟在线人数吧,可能。。。

  1. No trackbacks yet.