- 工信部备案号 滇ICP备05000110号-1
- 滇公安备案 滇53010302000111
- 增值电信业务经营许可证 B1.B2-20181647、滇B1.B2-20190004
- 云南互联网协会理事单位
- 安全联盟认证网站身份V标记
- 域名注册服务机构许可:滇D3-20230001
- 代理域名注册服务机构:新网数码
Apache服务器性能调优
Apache配置对您的服务器的性能有重大影响。 提高服务器性能的最简单方法是关闭不需要的?块。 本指南涵盖Apache模块,关闭哪些模块以及其他Apache性能调整选项。
有多种工具可以帮助确定是否需要更改资源设置,包括top命令和负载测试程序Siege。 使用以下命令查看使用统计信息
echo [PID] [MEM] [PATH] && ps aux | awk '{print $2, $4, $11}' | sort -k2rn | head -n 20
ps -eo pcpu,pid,user,args | sort -k 1 -r | head -20
更详细用于帮助了解Apache资源使用情况的工具包括Apache mod_status和Apache2Buddy。
Apache mod_status通过生成详细的状态页面来显示与入站服务器连接相关的信息。示例如下:
1.打开您的网站的配置文件。 此文件位于Debian / Ubuntu系统上的/etc/apache2/sites-available/example.com.conf或CentOS / Fedora系统上的/etc/httpd/conf.d/vhost.conf。
2.将以下内容添加到块中:
/etc/apache2/sites-available/example.com.conf (Debian/Ubuntu)
/etc/httpd/conf.d/vhost.conf (CentOS/Fedora)
<Location /server-status> SetHandler server-status Order Deny,Allow Deny from all Allow from localhost </Location>
3.Apache mod_status还提供了一个名为ExtendedStatus的选项,该选项提供有关向Apache发送的每个请求的额外信息。 要启用ExtendedStatus编辑您的Apache配置文件:
/etc/apache2/apache2.conf (Debian/Ubuntu)
/etc/httpd/confd/httpd.conf (CentOS/Fedora)
ExtendedStatus On
4.重启Apache
Debian/Ubuntu:
service apache2 restart
CentOS/Fedora:
/bin/systemctl reload httpd.service 5.要查看生成的文件,请下载Lynx:
Debian/Ubuntu:
apt-get install lynx
Fedora/CentOS:
yum install lynx
6.查看状态页
lynx http://www.landui.com/server-status
Apache2Buddy脚本与MySQLTuner类似,它检查您的Apache设置,并根据您的Apache进程内存和总体RAM提出建议。 虽然它是一个相当基本的程序,专注于MaxClients指令,不过Apache2Buddy相当有用,可以通过单个命令运行:
curl -L http://www.landui.com/ | perl
Apache提供两个多处理模块,三个(如果在Apache 2.4上),用于管理您的设置。
每个模块创建子进程,主要区别在于它们如何处理线程。
prefork模块在启动时创建多个子进程,每个子进程只处理一个线程。 由于这些进程一次只处理一个线程,因此如果有太多的并发请求,请求速度就会受到影响。 如果发生这种情况,一些请求基本上必须等待处理。 要处理此问题,请增加生成的子进程数,但请注意,这会增加RAM使用量。 Prefork是最安全的模块,当使用不是线程安?的模块时使用。
Worker模块的子进程在每个进程中生成许多线程,每个线程都能处理请求。 这提升了服务器的并发能力,当然也能减少服务器内存使用量。 总的来说,工作模块提供了更高的性能,但是比prefork安全性更低,不能与不是线程安全的模块一起使用。
Event模块仅在Apache 2.4上可用,并且基于Worker MPM。 和Worker一样,它为每个子进程创建多个线程,一个线程专用于KeepAlive连接,一旦请求发出,它就传递给子线程。 这对于多个并发连接很有用,特别是那些不是同时处于活动状态但却偶尔请求的连接。 在SSL连接的情况下,Event MPM的作用与Worker相同。
一旦选择了MPM,您需要更改配置中的值。 这些设置位于Debian / Ubuntu上的/etc/apache2/apache2.conf文件和CentOS / Fedora上的/etc/httpd/conf/httpd.conf文件。 MPM配置如下:
<IfModule mpm_prefork_module> StartServers 4 MinSpareServers 20 MaxSpareServers 40 MaxClients 200 MaxRequestsPerChild 4500 </IfModule>
对于其他MPM,分别将
重新配置Apache服务器的下一步是更改上述设置。 要做到这一点,你需要知道每个值的作用,以及如何更好地调节它。
同样,进行配置更改的最佳方法是进行增量更改,然后监视效果。
StartServers值指示启?时创建的子进程数,并根据负载进行动态控制。 通常没有理由更改此数字,除非您的服务器频繁重新启动,并在重新启动时接收大量请求。
设置空闲子进程的最小数量。 如果进程数少于MinSpareServer数,则会在Apache 2.2或更低版本上以每秒一个的速率创建更多进程。 使用Apache 2.4,此速率呈指数增长,从1开始到每秒生成32个子进程。 这个值的作用是,当收到一个新请求时,它可以直接使用空闲线程而不需要新生成一个; 如果已经没有可用线程了,Apache会新生成一个子进程,不过这会消耗服务器资源以及延长请求处理时间。 注意,太多的空闲进程也会对服务器产生不利影响。
设置空闲子进程的最大数量。 如果空闲进程超出这个值,多余的将会终止。 除非您的网站非常繁忙,否则此数字不应设置过高,因为即使空闲进程也会消耗资源。
可同时提供的最大请求数量,请求数超过限制时后来的请求将入队列。 如果这个设置太低,队列中的连接可能会超时; 但是,如果设置过高,则会导致内存不足出现swap。 如果此值增加超过256,则还必须增?ServerLimit值。
计算最佳值的一种方法是用服务器可用内存除以每个Apache进程使用的内存量,注意要为其他进程留出一些内存空间。 使用ApacheBuddy帮助确定这些值,或下面的命令。
要确定每个Apache进程使用的RAM,请在Debian或Ubuntu系统上将apache2替换为httpd:
ps -ylC httpd --sort:rss
除以1024转为Mb
获取内存使用信息:
free -m
售前咨询
售后咨询
备案咨询
二维码
TOP