Apache性能优化

250 阅读2分钟

记录一下在windows系统下,apache+php的性能优化。

1、按天切分apache下虚拟机的日志

相关配置如下:

ErrorLog  "|bin/rotatelogs.exe -l logs/error-%Y-%m-%d.log 86400"
CustomLog  "|bin/rotatelogs.exe -l logs/access-%Y-%m-%d.log 86400" common

2、apache进程优化

打开httpd.conf配置文件,找到httpd-mpm.conf,去掉最前面的#号开启此模块。

Include conf/extra/httpd-mpm.conf

不同版本的apache中httpd-mpm.conf的存放位置可能不一样; 因为用的系统是windows所以模式是winnt_module的模式,其它系统要查模式通过

httpd -l 或 httpd -v

*在httpd-mpm.conf中找到mpm_winnt_module

ThreadsPerChild   150   #推荐设置 小型网站=100中型网站=1000~2000大型网站=2000~3500
MaxRequestsPerChild  0  #推荐设置:小=10000 中或大=20000~100000

3、缓存优化

Apache中的 Mod_expires模块可以通过在客户机上缓存,减少20%-30%左右的重复请求。

打开httpd.conf配置文件,找到mod_expires.so,去掉最前面的#号开启此模块。

在httpd.conf配置文件的最后面加入以下代码。

ExpiresActive On

ExpiresDefault A3600

# 1 星期

ExpiresDefault A604800

4、php开启opcache

找到并打开php.ini

引入opcache.so

需先落实php_opcache.dll的存放位置,一般存放在bin目录下

zend_extension=php_opcache.dll

启用 OPcache(默认是关闭的)

opcache.enable=1

对 OPcache 进行优化配置:

opcache.memory_consumption=512

分配给 OPcache 的内存空间(单位:MB),设置一个大于 64 的值,按照64M、128M、256M、512M;

opcache.interned_strings_buffer=64

这个配置表示你想要分配给实际字符串的空间(单位:MB),设置一个大于 16 的值即可,不能大于memory_consumption,否则会报错

opcache.max_accelerated_files=32531

可以缓存多少个脚本,将这个值尽可能设置为与项目包含的脚本数接近或更大

opcache.validate_timestamps=1
opcache.revalidate_freq=60

改配置值用于重新验证脚本,如果设置为 0(性能最佳),需要手动在每次 PHP 代码更改后手动清除 OPcache。如果你不想要手动清除,可以将其设置为 1 并通过 opcache.revalidate_freq 配置重新验证间隔,这可能会消耗一些性能,因为需要每隔 x 秒检查更改。

opcache.fast_shutdown=1

快速关闭会给一个更快速清理内存的机制;

综合配置最终如下:

zend_extension=php_opcache.dll 或 zend_extension=php_opcache.so

opcache.enable=1

opcache.memory_consumption=512

opcache.interned_strings_buffer=64

opcache.max_accelerated_files=100000

opcache.validate_timestamps=1

opcache.revalidate_freq=60

opcache.fast_shutdown=1

以上内容大部分借鉴与网络平台,此次用于记录,便于后续应用。感谢大家的无私奉献