apache work内存优化
云主机或vps,内存都比较宝贵,默认的设置,在高负荷下会吃光内存,这时候mysql再动态请求内存可能会失败而进程退出。
需要做一些限制。
下面涉及数值为64位系统下估算。
我们需要关系三个内存值,mysqld,apache,php
work模式下,php是独立进程,每个占用60~70m(wordpress+discuz应用),内存消耗大户。
apache进程内存占用很少,1个大概2~7m不等。
mysql只有一个进程,60~80m内存占用。
需要限制的是php进程数量和apache进程数量。
1、修改apapche的work配置
vim /etc/apache2/apache2.conf
StartServers 2 #初始进程(apache进程) MinSpareThreads 25 #最小空闲线程数 MaxSpareThreads 75 #最大空闲线程数 ThreadLimit 50 #每个子进程可配置的线程数上限 ThreadsPerChild 25 #每个子进程建立的常驻的执行线程数 ServerLimit 10 #apache最大进程数 MaxClients 200 #允许同时伺服的最大接入请求数量(最大线程数量) MaxRequestsPerChild 500 #设置每个子进程在其生存期内允许伺服的最大请求数量(不设置位0,可避免应用的内存泄漏引发内存问题)
公式:
ThreadLimit >= ThreadsPerChild MaxClients <= ServerLimit * ThreadsPerChild 必须是ThreadsPerChild的倍数 MaxSpareThreads >= MinSpareThreads+ThreadsPerChild
2、修改fcgi配置
vim /etc/apache2/mods-available/fcgid.conf
AddHandler fcgid-script .fcgi AddHandler fcgid-script .php FCGIWrapper /usr/lib/cgi-bin/php5 .php FcgidConnectTimeout 20 FcgidMaxProcesses 5 # 最大进程数量 FcgidMaxRequestsPerProcess 1000 # 每个进程最大请求数,达到后进程销毁,再创建 FcgidMaxRequestLen 10485760 # 限制了上传文件大小,同时要结合php.ini里面的设置