linux中512M VPS内存优化步骤详解

512M的VPS优化apache内存

查看目前占用内存

Ps aux|grep httpd

基本一个占用50M左右

ps aux|grep httpd | wc –l

一共13个,减去grep httpd 那行 12个,说明占用大约600M
超过了服务器512M内存,

(相比之下nginx主进程占用50M,带着php-fpm跑,一个fpm占用2M,开启10个fpm进程,一共70M的内存就足够了。)

标准Linux Apache配置在Apache的配置文件在/etc/httpd/conf/httpd.conf

但是lampp的不在httpd.conf里,而是在extra/http-default.conf里面。
两处地方分别对应两个模块prefork模块和worker模块(Apache默认启用的是prefork模块),根据自己的服务器启用的模块分别修改对应的参数,可以用命令httpd -l查看apache所使用的模块。
各参数含义解释如下:
• StartServers //指定服务器启动时建立的子进程数量,prefork默认为5。如果你的内存占用过大,可适当减小此值。
• MinSpareServers //指定空闲子进程的最小数量,默认为5。如果当前空闲子进程数少于MinSpareServers ,那么Apache将以最大每秒一个的速度产生新的子进程。
• MaxSpareServers //设置空闲子进程的最大数量,默认为10。如果当前有超过MaxSpareServers数量的空闲子进程,那么父进程将杀死多余的子进程。如果你将该指令的值设置为比MinSpareServers小,Apache将会自动将其修改成”MinSpareServers+1″。
• MaxClients //限定同一时间客户端最大接入请求的数量(单个进程并发线程数),默认为256。任何超过MaxClients限制的请求都将进入等候队列,一旦一个链接被释放,队列中的请求将得到服务。要增大这个值,你必须同时增大ServerLimit 。
• ServerLimit //默认的MaxClient最大是256个线程,如果想设置更大的值,就的加上ServerLimit这个参数。20000是ServerLimit这个参数的最大值。注意,要想此参数生效:必须放在MaxClients指令的前面。
• MaxRequestsPerChild //每个子进程在其生存期内允许伺服的最大请求数量,默认为10000.到达MaxRequestsPerChild的限制后,子进程将会结束。如果MaxRequestsPerChild为”0″,子进程将永远不会结束。建议将此值设为非零值,可以防止内存泄漏以及当服务器负载减轻的时候减少活动进程的数量,如果内存占用过大,可以减少此值。
worker模块中多了几个参数,解释如下:
• ThreadLimit //每个子进程可配置的线程数上限。这个指令设置了每个子进程可配置的线程数ThreadsPerChild上限。任何在重启期间对这个指令的改变都将被忽略,但对ThreadsPerChild的修改却会生效。默认值是”64″.
• MinSpareThreads //最小空闲线程数,默认值是”75″。这个MPM将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数太少,子进程将产生新的空闲线程。
• MaxSpareThreads //设置最大空闲线程数。默认值是”250″。这个MPM将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数太多,子进程将杀死多余的空闲线程。MaxSpareThreads的取值范围是有限制的。Apache将按照如下限制自动修正你设置的值:worker要求其大于等于MinSpareThreads加上ThreadsPerChild的和。
• ThreadsPerChild //每个子进程建立的常驻的执行线程数。默认值是25。子进程在启动时建立这些线程后就不再建立新的线程了。
修改保存之后,要想使配置生效,需先执行service httpd stop
然后service httpd start
直接service httpd restart无法使修改过的配置生效!
觉得有必要解释一下preforx模块的StartServers、MinSpareServers、MaxSpareServers这几个参数的相互关系,这样当你们的主机内存不足的时候,可以根据你们的实际情况来相应的修改这些值!
当Apache启动时,Apache会启动StartServers个空闲进程同时准备接收处理请求,当多个请求到来时,StarServers进程会越来越少,当空闲进程减少到MinSpareServers个时,Apache为了能够继续有充裕的进程处理请求,它会再启动StartsServers个进程备用,直到剩下的空闲进程数量到达MaxSpareServers为止,这样就大大减少了请求队列等待的可能,使得服务效率提高,这也是为什么叫做Pre-fork的原因;

<IfModule mpm_prefork_module>
    StartServers          2
    MinSpareServers       2
    MaxSpareServers       4
    MaxClients          150
    MaxRequestsPerChild  20
</IfModule>

这样最后一共启动4个进程,apache一共占用内存200M(还是比nginx大好多。)

对于小网站这么玩,还凑合,流量大了,还是去买个大点内存的VPS吧。或者用nginx能好一些。

优化数据库mysql

数据库内存比较好查看
Ps aux|grep mysql

直接显示 占用了300M

实际最大的消耗还是卡在mysql上,php如果有like查询,512M的内存基本扛不住。而且速度很慢。所以尽可能控制mysql执行时间到最短。

时间: 2024-08-04 00:38:01

linux中512M VPS内存优化步骤详解的相关文章

Linux中编译安装MemcacheQ的步骤详解

队列(Queue)是一种常用的数据结构.在队列这种数据结构中,最先插入的元素将会最先被取出:反之最后插入的元素将会最后被取出,因此队列又称为"先进先出"(FIFO:First In First Out)的线性表. 加入元素的一端叫"队尾",取出元素的一端叫"队头".利用消息队列可以很好地异步处理数据的传送和存储,当遇到频繁且密集地向后端数据库中插入数据时,就可采用消息队列来异步处理这些数据写入. MemcacheQ是一款基于Memcache协议的

linux中配置Gitolite+Gitweb+Nginx步骤详解

Gitolite是功能非常强大的Git服务器构建工具,可以比较方便地实现用户权限管理等功能.但是Gitolite是一个纯粹的Git服务器,不像Gitlab等项目,自身不具备其它的访问和浏览方式. 之前的服务器上也配置过Gitolite,同时配合Redmine来用.对我来说不管是Gitlab还是Redmine功能都太过丰富了.实际上自己的服务器上装Gitolite只是放一些私有库,我只需要一个简单直观的Web浏览功能而已.论项目协作的话,不管是Github还是国内的Gitcafe和OSC都是很不错

Linux中安装rsync同步工具步骤详解

 rsync是一款服务器与服务器这间的同步工具了,通常我们可以利用rsync来实时数据同步操作了,下面我一起来看看安装rsync同步软件的教程.   安装 rsync-3.1.0.tar.gz  #tar zxvf rsync-3.1.0.tar.gz #cd rsync-3.1.0 #./configure --prefix=/home/work/rsync #make  #make install rsync服务端的配置: 环境:192.168.11.11为生产机:192.168.11.12

Linux中安装jdk1.6 x64步骤详解

下载jdk1.6 进入oracle官网,依次选择 Downloads-->Java SE-->拉倒网页最底部,点击Previous Releases - Java Archive后的DOENLOAD按钮,选择Java SE 6,选择Java SE Development Kit 6u45,选择Accept License Agreement后下载这个(下载时需要登录): blob.png 拷贝至服务器/usr/local # chmod +x jdk-6u45-linux-x64.bin #

linux中安装php solr扩展步骤详解

从http://pecl.php.net/package/solr下载最新版本. 解压后运行: phpize ./configure make install 在/etc/php.d下随便复制一个扩展的文件,把里面加载的扩展改成solr.so.重启php-fpm加载solr扩展:service php-fpm reload 然后修改php.ini(vim /usr/local/etc/php.ini ),把 extension_dir = "./" 修改为 extension_dir

linux中openSUSE 的 Apache配置步骤详解

DNS 绑定 A 记录# 首先在 DNS 上创建 A 记录,将域名绑定到相应 IP 上. 创建站点目录# 在服务器上,添加 /srv/www/vhosts/www.111cn.net 目录,并在该目录下创建一个 index.html 文件 – 用于测试. 配置 Apache# 创建虚拟主机配置文件#  代码如下 复制代码 $ cd /etc/apache2/vhosts.d $ sudo cp vhost.template www.111cn.net.conf 修改 www.111cn.net.

linux中samba的部署及应用详解

samba: 启动服务:nmb.server:smb.server 会通过文件系统的方式输出给客户端 smb:Service Message Block:服务信息块 cifs:Common Internet File System,通用互联网文件系统 samba:Andrew Tridgell:热情奔放的桑巴舞,主要的协议 cifs,协议 1.功能: 文件系统共享: NetBIOS协议: 打印服务: 2.工作模型 peer to peer(Work Group):工作组模型 domain dev

Linux中工作管理与系统资源查看详解

Part One 工作管理 工作管理指的是在单个登录终端同时管理多个工作的行为.Linux中的工作管理,简而言之就是把工作放在后台运行的行为.在windows中,我们经常也会针对各种工作做出管理,常用的将工作放在后台的方式就是最小化某个应用程序.那么为什么要对工作进行管理呢?在windows中这很好理解,我们要对其他工作进行操作时,一般只有将当前工作界面最小化才能方便处理其他工作.同样的,在Linux中,比如我们执行cp命令复制一个很大的文件时,如果不是将其置于后台执行,就只能等到复制完成才能对

SQL Server 2014 数据内存优化表详解

不同于disk-based table,内存优化表驻留在内存中,使用 Hekaton 内存数据库引擎实现.在查询时,从内存中读取数据行:在更新时,将数据的更新直接写入到内存中.内存优化表能够在disk上维护一个副本,用于持久化数据集. Memory-optimized tables reside in memory. Rows in the table are read from and written to memory. The entire table resides in memory.