认识到Ubuntu 14.04将Apache 2与PHP一起使用通过mpm_prefork模块运行的PHP,该模块的可编辑文件位于/etc/apache2/mods-enabled/mpm_prefork.conf中。另外,请注意,从Apache 2.4开始,MaxClients现在已重命名为MaxRequestWorkers,因此有关MaxClients的所有文档都需要切换到MaxRequestWorkers。
暂时使用以下命令停止Apache Web服务:
sudo服务apache2停止
- 等待5秒钟,然后运行以下命令来查找服务器上可用的虚拟内存量:
须藤免费-ht
阅读Mem:行,并查看免费专栏。尽管我通常喜欢在功能更强大的服务器(如大于4GB)中减去2GB或在更轻便的服务器上减少1GB,但可以将其视为可以分配给Apache的RAM数量。因此,如果免费专栏说我有13GB的免费空间,我建议给Apache 11GB。那是基线。如果我们偶尔在日志中遇到任何数据库问题(例如在3天的时间里日志中有3次),则它需要更多的内存,那么我们可能会认为只有10GB可以玩,而不是11GB(在这种情况下) )。如果我们在Apache日志中遇到服务器需要更多MaxRequestWorkers的问题,那么这是一个单独的问题,我将在下面解决。
- 启动Apache Web服务器。
sudo服务apache2启动
像打开10个浏览器标签页一样打开,从您的网站连接到某些较长或加载较慢的页面,然后在每个标签页上刷新3-4次。
之后,立即运行以下命令:
sudo ps -ylC apache2 | awk'{x + = $ 8; y + = 1} END {print“ Apache内存使用率(MB):” x / 1024; 打印“平均进程大小(MB):“ x /((y-1)* 1024)}'
快速运行5次。
查看“平均流程大小”值,然后将其平均运行5次。
现在进行以下数学运算,并确保根据需要将GB转换为MB,以便所有数字均以MB值表示。因此,可以乘以1024或除以1024,具体取决于您要走的路。
MaxRequestWorkers =无基线(具有缓冲区空间)/ 平均进程大小
例如,我有一台14GB的服务器,但是当Apache停止时,该服务器显示它在空闲状态下使用了1GB RAM。然后,我为操作系统提供了一些额外的1GB的额外缓冲空间,以备不时之需。这意味着我将拥有12GB的免费基准。现在,我必须将其从GB转换为MB,因此我将12 x 1024乘以得到12288。12288MB是我的Baseline Free值。就我而言,我看到平均进程大小为21MB。因此,我采用12288/21,我得到大约585。现在,sysops将这个值四舍五入是很常见的,所以我得到580。
- 编辑文件/etc/apache2/mods-enabled/mpm_prefork.conf并考虑将其设置为以下默认值,并用MaxRequestWorkers计算替换XXX:
`<IfModule mpm_prefork_module>`
StartServers 2
MinSpareServers 2
MaxSpareServers 5
MaxRequestWorkers XXX
ServerLimit XXX
MaxConnectionsPerChild 0
</IfModule>
请注意,您可能在此处看不到ServerLimit参数。添加它。如果不存在,则此参数默认为256,但需要与MaxRequestWorkers的值相同,否则会出现错误。
Apache配置中的另一个关键因素是带有Timeout变量的/etc/apache2/apache2.conf文件,以秒为单位。这是您可以在服务器超时之前从服务器发送或接收的时间。您还必须牢记文件上传或文件下载,例如,如果您有一个网站,人们可以在其中上传或下载CSV或其他大文件。并且您需要记住繁忙的数据库服务器,并且可能需要在页面超时之前提供一些时间。使Timeout变量越小,Web服务器就越有能力接收新连接。但是请注意,将此值设置得太低可能会破坏PHP会话变量,尽管不会导致基于浏览器会话的cookie。因此,例如 对于依赖于Web应用程序工作流程的PHP会话变量而不是浏览器会话cookie的Web服务器,最好使用300(5分钟)的值。值45可能对只提供静态广告登陆页面的Web服务器有用,但对于需要大量使用PHP会话变量的服务器而言,这将是可怕的。因此,将此文件中的Timeout参数编辑为所需的数量。您可能需要对所有网页进行一些测试,以查看该值是否太低。但是,最好不要将其设置为大于300,除非您在上传大文件或下载大文件时遇到问题。但是对于需要大量使用PHP会话变量的服务器而言,这将是可怕的。因此,将此文件中的Timeout参数编辑为所需的数量。您可能需要对所有网页进行一些测试,以查看该值是否太低。但是,最好不要将其设置为大于300,除非您在上传大文件或下载大文件时遇到问题。但是对于需要大量使用PHP会话变量的服务器而言,这将是可怕的。因此,将此文件中的Timeout参数编辑为所需的数量。您可能需要对所有网页进行一些测试,以查看该值是否太低。但是,最好不要将其设置为大于300,除非您在上传大文件或下载大文件时遇到问题。
现在,重新启动Apache Web服务。如果您做错了什么,Apache可能会在您再次启动它时将其告知您,并且您可以进行纠正。
sudo服务apache2重新启动
- 现在,重复之前所做的10选项卡浏览器技巧,并查看Apache Web服务器错误日志中是否遇到Apache配置错误:
须藤尾巴-f /var/log/apache2/error.log
...如果需要,请按CTRL + C摆脱该限制。
寻找有关需要MaxRequestWorkers的投诉(以及最近重新启动Web服务器以来的投诉)。如果您看到最佳的MaxRequestWorkers设置,那么您的网站或Web应用程序可能需要更多的强大功能。考虑以下选项:
- 使用CDN进行大文件下载,图像和脚本。
- 使用缓存服务,例如CloudFlare或其他。
- 重做您的网站或Web应用程序策略,以使用多个Web服务器充当负载均衡器后面的一个“ Web应用程序”。
- 向服务器添加更多RAM,从而再次进行此计算。
- 现在已经调整了Apache服务器,它已经完成了一些基准调整。您需要在2-3周的时间内进行检查,并在Apache错误日志中查找MaxRequestWorker问题。由此,您可以决定优化(请参见步骤10)。您还可以在Ubuntu上使用apt安装Munin,并查看Apache随时间推移的性能,并确定增长点,然后再决定需要对Web服务器处理的流量进行任何处理。