欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

apache+php配置优化

程序员文章站 2022-07-09 19:31:01
1、httpd -V 查看http工作的模式,apache2.4有三个模式:prefork、worker、event。worker和event类型,event相当于是worker的进化版。大体的区别开篇另讲。参考这个链接:https://blog.51cto.com/xsboke/19143702、进程和线程的配置看具体是什么模型,目前项目中使用的是event,应对高并发场景比前两者会好。StartServers 3...

1、httpd -V 查看http工作的模式,apache2.4有三个模式:prefork、worker、event。

worker和event类型,event相当于是worker的进化版。

大体的区别开篇另讲。参考这个链接:https://blog.51cto.com/xsboke/1914370

2、进程和线程的配置

看具体是什么模型,目前项目中使用的是event,应对高并发场景比前两者会好。

<IfModule mpm_worker_module>
StartServers 3 //初始化的进程数,缺省最大16,如果需要增大,需要设置ServerLimit 值
MinSpareThreads 75
MaxSpareThreads 250 //最小/最大空闲数量,不是很关键,是为了当请求进来的时候可以马上处理

ServerLimit  32 //子进程最大数量(这个感觉还是不能开太大,比较进程,多的话比较耗费资源)

ThreadsPerChild 25 //每个子进程固定的线程数(缺省最大64 ,最高20000)
MaxRequestWorkers 400 

//最大工作线程数量,当负载不够的情况下,系统会自动创建进程和线程数,从上面的配置理论上最大可以达到16*25=400,如果不够的话,需要配置serverlimit , 一旦配置了,ThreadsPerChild  * ServerLimit (默认的进程数16)需要大于=MaxRequestWorkers,并且,MaxRequestWorkers的值需要是ThreadsPerChild 的整数倍。

MaxConnectionsPerChild 20000  //需要配置下,避免内存泄漏
</IfModule>

 

3、超时配置

KeepAliveTimeout:长连接的超时时间,负载高的时候容易造成系统性能问题。

timeout: 默认就行

RequestReadTimeout: 通过reqtimeout_module模块进行设置,防止慢速攻击

<IfModule reqtimeout_module> RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500 </IfModule>

3、php-fpm参数调优

pm = static   
pm.max_children = 100 #进程数
pm.start_servers = 15  
pm.min_spare_servers = 15
pm.max_spare_servers = 60
pm.max_requests = 10000  #达到多少请求后重启进程,如果后期服务器内存不够,试着调低该值
request_terminate_timeout = 100  # 根据自己的业务需求,因为有些程序可能跑比较长的时间

内存大的服务器(比如8G以上)来说,指定静态的max_children实际上更为妥当,因为频繁开关php-fpm进程也会有时滞,所以内存够大的情况下开静态效果会更好。

 

查看apache进程数目

ps aux | grep apache | wc -l

worker/event模式下,查看线程数目。
ps -eLf | grep apache | wc -l

查看php-fpm进程数。
ps aux | grep php-fpm | wc -l

查看每个fpm的占用内存。

ps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'

本文地址:https://blog.csdn.net/qq_27418931/article/details/107345348

相关标签: 安全性 apache