前言

这是一篇极其没有营养的文章,那么请问“什么还要写?”,正所谓“不积跬步无以至千里,不积小流无以成江海”,难得学习与总结。而且,并不一定每篇文章都需要长篇大论、“看似高深”,最后网友看后毫无感觉。

这篇文章以我的阿里云服务器为例(你眼前的博客正是搭在这个服务器上),阐述下小型网站(Linux+Apache+MySQL+PHP)对于内存利用率提升的配置方法的一个点。

正文

我的服务器是阿里云的,在一年前由于数据库(MySQL)频繁内存不足宕机就“潇洒”地升级了配置到2G内存。所以,目前机器的配置如下:

CPU: 1核
内存: 2048 MB
操作系统: CentOS 6.5 32位
公网IP: 115.28.36.19
带宽计费方式: 按固定带宽
当前使用带宽: 1Mbps

同时,正常使用情况下的内存使用情况如下:

linux 内存mysql与apache占用
linux 内存mysql与apache占用

图中显示MySQL占用440m,Apache占用44m。当然,这是MySQL服务和Apache服务刚刚重启后的情况。实际的内存占用会比这大,因为随着业务的进行,会进行Cache的累积,最后导致整体的使用内存增大。

下面分别调整MySQL和Apache的配置文件。

MySQL

修改/etc/my.cnf 文件,增加如下配置内容:

performance_schema_max_table_instances=400
table_definition_cache=400
table_open_cache=256

内容使用情况如下:

linux下mysql内存使用情况
linux下mysql内存使用情况

如图所示,在修改MySQL配置项后内存使用已经大幅度下降到71m了。所以,默认的MySQL配置真是不适合我们这种小型网站。同时,你会注意到运行了一段时间后,Apache内存占比上升,使用量达到406m。真是可怕。

下面我们修改Apache的配置文件,httpd.conf:

# event MPM
# StartServers: initial number of server processes to start
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestWorkers: maximum number of worker threads
# MaxConnectionsPerChild: maximum number of connections a server process serves
# before terminating
<IfModule mpm_event_module>
StartServers 3
MinSpareThreads 5
MaxSpareThreads 50
ThreadsPerChild 10
MaxRequestWorkers 50
MaxConnectionsPerChild 50
</IfModule>

由于我的Apache加载的是event模式,所以我这里修改了相应的event模块配置。如果你想知道你自己加载的是哪种模式,每一个配置项是什么意思(如果不想看英文的话),那么你可以参阅下这篇文章:apache2.4.x三种MPM介绍

修改后配置重启就OK了,这里我就不再截取我重启后的内存使用情况图片了。因为,没有意义。为什么?你读了上面文章的内容,了解了配置项的意义就可以了。

总结

没有总结


文章来源:胡旭博客 => 小型网站架构降低Apache与MySQL内存占用比率

转载请注明出处,违者必究!

Share:

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.