Nginx php优化
1.首先安装最新的稳定版的Nginx和PHP
每次的版本升级都会看到有相应的性能优化和问题修复相关的。同时大家在遇到问题的时候,也可以很快找到相关的资料。
2.精简化安装
通过源码编译的方式,选择业务需要的功能模块。不可否认,过多无用的模块对于软件运行来说会带来无谓的cpu和RAM的资源消耗
3.修改系统ulimit参数
修改系统的最大文件打开数和最大进程数,具体操作方式可参考 https://gitsea.com/?p=175
4.优化Nginx.conf
worker_processes 2;//工作进程数建议设置成CPU核数,查看cpu核数命令:cat /proc/cpuinfo |grep processor
use epoll://这个就不解释了
worker_connections 10240;//每个nginx进程的连接数,过高的数量并无太大的意义
error_log /home/wwwlogs/nginx_error.log crit;//日志级别设置成最低,如果前期需要调试的话,建议设置成error以上
server_tokens off;//隐藏Server token
access_log off;//关闭访问日志,减少无用日志的输出,对程序来说也是一种减压方式
fastcgi_pass 127.0.0.1:9000;//把默认的Nginx和Php通信代理方式由unix socket改成基于tcp socket的方式,以我个人测试的结果来看,在低并发的时候,两种并无太大差别,但是如果在高并发时候,unix socket很容易报502错误
之前也尝试过修改backlog参数,见效不大
gzip on;//开启gzip压缩
fastcgi_connect_timeout 500;
fastcgi_send_timeout 500;
fastcgi_read_timeout 500;
fastcgi_buffer_size 64k;
fastcgi_buffers 8 128k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 256k;//以上fastcgi参数,建议增加超时时间和缓冲池大小
对静态资源做http 缓存
对于Nginx的常用配置可以参考https://gitsea.com/?p=195
5.修改php-fpm.conf
//全局配置 emergency_restart_threshold = 10 //子进程在 emergency_restart_interval 设定的时间内收到该参数设定次数的 SIGSEGV 或者 SIGBUS退出信息号,则FPM会重新启动,默认关闭 emergency_restart_interval= 1m // 用于设定平滑重启的间隔时间,有助于解决加速器中共享内存的使用问题 process_control_timeout =10s //设置子进程接受主进程复用信号的超时时间 [www] listen = 127.0.0.1:9000 user = www group = www pm = dynamic //小内存适合动态,大内存推荐静态方式 pm.max_children = 10 //设置php-fpm最大子进程数 request_slowlog_timeout = 5s //设置慢日志 slowlog = /var/log/php-fpm/slowlog-site.log pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 6 pm.status_path = /status //FPM 状态页面的网址。如果没有设置,则无法访问状态页面,默认值:无 listen.backlog = -1 //设置 listen(2) 的半连接队列长度,默认-1,表示无限制 request_terminate_timeout = 5s//设置单个请求的超时中止时间 rlimit_files=51200 //设置文件打开描述符的 rlimit 限制,默认值为系统设定 pm.max_requests=10240//设置每个php-fpm处理完多少个请求之后销毁,默认值0,一直接受请求
6.增加Php缓存
最新的php已经集成opcache,在编译的时候记得使其生效
7.多个php site 配置
建议设置多个fastcgi pass,开启多个端口服务,映射到不同的项目中
附:查看php-fpm 进程数 ps aux | grep -c php-fpm