前言
这篇文章以我的阿里云服务器为例(你眼前的博客正是搭在这个服务器上),阐述下小型网站(Linux+Apache+MySQL+PHP)对于内存利用率提升的配置方法的一个点。
正文
我的服务器是阿里云的,在一年前由于数据库(MySQL)频繁内存不足宕机就“潇洒”地升级了配置到2G内存。所以,目前机器的配置如下:
CPU: 1核 |
内存: 2048 MB |
操作系统: CentOS 6.5 32位 |
公网IP: 115.28.36.19 |
带宽计费方式: 按固定带宽 |
当前使用带宽: 1Mbps |
同时,正常使用情况下的内存使用情况如下:
图中显示 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
内容使用情况如下:
如图所示,在修改 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 内存占用比率
转载请注明出处,违者必究!