nginx优化fpm优化

news/2024/7/7 21:47:15 标签: nginx

nginx 隐藏版本号

vim /usr/local/nginx/conf/nginx.conf 编辑主配置文件
http {
    include       mime.types;
    default_type  application/octet-stream; 下
    #添加 server_tokens off # 关闭版本号
  效果 : Server: nginx


curl -I 192.168.79.160  #可查看版本
HTTP/1.1 200 OK
Server: nginx

修改Nginx用户与组

编译安装时指定用户与组
 ./configure \
–prefix=/usr/local/nginx	\
--user=nginx	\
--group=nginx	\

修改配置文件指定用户与组
vim /usr/local/nginx/conf/nginx.conf
user  nginx nginx; #第一排


配置Nginx网页缓存时间

当Nginx将网页数据返回给客户端后,可设置缓存的时间,以方便在日后进行相同内容的请求时直接返回,避免重复请求,加快了访问速度
一般针对静态网页设置,对动态网页不设置缓存时间
可在Windows客户端中使用fiddler查看网页缓存时间

vim /usr/local/nginx/conf/nginx.con
server {
        listen       80;
        server_name  www.hs.com;

        location / {
            root   /usr/local/nginx/html;
            index  index.html index.php index.htm;
        }
        # ~ :区分大小写
         
        location ~ \.php$ {    
        root /usr/local/nginx/html;
        index index.php;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi.conf;
     #这里是缓存一天   expires 1d;
           }
}


4、日志切割
(1)编写脚本,把日志文件移动到var/log/nginx/下,以当前时间为名称,用kill -USR1创建新日志文件/usr/local/nginx/logs/access.log,最后删除30天前的日志文件

#!/bin/bash
#nginx log fg
d=`date -d "-1 day" +%Y%m%d`
logspath="/var/log/nginx"
pidpath="/usr/local/nginx/logs/nginx.pid"
[ -d $logspatn ] || mkdir -p $logspatn
mv /usr/local/nginx/logs/access.log "$logspath/luobin.com-access-$d.log"
mv /usr/local/nginx/logs/error.log "$logspath/luobin.com-error-$d.log"
kill -USR1 $(cat $pidpath)
find $logspath -mtime +30 | xargs rm -rf

crontab -e
1 0 * * * /bin/bash fenge.sh
systemctl restart crond
systemctl enable crond

配置Nginx实现连接超时

在企业网站中,为了避免同一个客户长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现控制连接访问时间

超时参数讲解

Keepalive_timeout
设置连接保持超时时间,一般可只设置该参数,默认为75秒,可根据网站的情况设置,或者关闭,可在http段、server段、或者location段设置
Client_header_timeout
指定等待客户端发送请求头的超时时间
Client_body_timeout
设置请求体读超时时间
keepalive_timeout  65 180;  //连接保持超时时间,65为服务端超时时间,180为客户端超时时间,单位秒
    client_header_timeout 80;   //等待客户端发送请求头部的超时时间
    client_body_timeout 80;   //请求体读超时时间

更改Nginx运行进程数

在高并发场景,需要启动更多的Nginx进程以保证快速响应,以处理用户的请求,避免造成阻塞
可以使用ps aux命令查看Nginx运行进程的个数

worker_processes:设置进程数,一般设为CPU的个数或者核数,在高并发的情况下可设置为CPU个数或者核数的2倍
查看CPU核数:cat /proc/cpuinfo | grep -c physical
默认情况下,nginx的多个进程可能更多的跑在一个CPU上,通过设置worker_cpu_affinity 0001 0010 0011 0100使每个进程分别由不同CPU核心处理(双核:0101 1010;)

root@lnmp conf]# ps aux |grep nginx
root       1771  0.0  0.0  20548   704 ?        Ss   23:03   0:00 nginx: master process /usr/local/sbin/nginx
nginx      1773  0.0  0.0  22224  2488 ?        S    23:03   0:00 nginx: worker process
nginx      1774  0.0  0.0  22224  2488 ?        S    23:03   0:00 nginx: worker process
nginx      1775  0.0  0.0  22224  2488 ?        S    23:03   0:00 nginx: worker process
nginx      1776  0.0  0.0  22224  2488 ?        S    23:03   0:00 nginx: worker process

配置Nginx实现网页压缩功能

Nginx的ngx_http_gzip_module压缩模块提供对文件内容压缩的功能

允许Nginx服务器将输出内容在发送客户端之前进行压缩,以节约网站带宽,提升用户的访问体验,默认已经安装

可在配置文件中加入相应的压缩功能参数对压缩性能进行优化

压缩模块:ngx_http_gzip_module,默认已安装

压缩功能参数讲解

gzip on:开启gzip压缩输出
gzip_min_length 1k:用于设置允许压缩的页面最小字节数
gzip_buffers 4 16k:表示申请4个单位为16k的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果
zip_http_version 1.0:用于设置识别http协议版本,默认是1.1,目前大部分浏览器已经支持gzip解压,但处理最慢,也比较消耗服务器CPU资源
gzip_comp_level 2:用来指定gzip压缩比,1压缩比最小,处理速度最快;9压缩比最大,传输速度快,但处理速度最慢,使用默认即可
gzip_types text/plain:压缩类型,是就对哪些网页文档启用压缩功能
gzip_vary on:选项可以让前端的缓存服务器缓存经过gzip压缩的页面
   server {
        listen       80;
        server_name  www.hs.com;
   location / {
        root   /usr/local/nginx/html;
        index  index.html index.php index.htm;
    }
    location ~ \.(jpg|gif|png|swf|flv|wma|wmv|asf|mp3|mmf|zip|rar)$ {
            valid_referers 192.168.79.160;
            if ($invalid_referer) {
            return 403;
            }
    }
    location ~ \.php$ {
    root /usr/local/nginx/html;
    index index.php;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include fastcgi.conf;
    expires 1d;
    }
    }

FPM模块优化

对FPM模块进行参数优化
Nginx的PHP解析功能实现如果是交由FPM处理的,为了提高PHP的处理速度,可对FPM模块进行参数的调整

FPM模块参数调整,要根据服务器的内存与服务负载进行调整

启动fpm进程方式 有两种

static:将产生固定数量的fpm进程 static使用pm.max_children指定启动进程数
dynamic:将以动态的方式产生fpm进程 dynamic根据服务器内存与服务负载进行调整
通过pm参数指定
FPM优化参数讲解

Static的方式的参数

pm.max_children:指定启动的进程数量
Dynamic方式的参数

pm.max_children:指定启动的进程数量最大的数量
pm.start_servers:动态方式下初始的fpm进程数量
pm.min_spare_servers:动态方式下最小的fpm空闭进程数
pm.max_spare_servers:动态方式下最大的fpm空闭进程数

动态方式因为会结束掉多余的进程,可以回收释放一些内存,所以推荐在内存较少的服务器或者VPS上使用。具体最大数量根据 内存/20M 得到。(比如说512M,建议pm.max_spare_servers设置为20(512*0.8/20)。至于pm.min_spare_servers,则建议根据服务器的负载情况来设置,比较合适的值在5~10之间。)

对于比较大内存的服务器来说,设置为静态的话会提高效率。(比如说2GB内存的服务器,可以设置为50;4GB内存可以设置为100等。)

# 编辑php-fpm配置文件
[root@lnmp logs]# cd /usr/local/php5/etc
[root@lnmp etc]# vim php-fpm.conf

# 我的主机内存4g  因此这样配置
pm = dynamic	# 动态模式
pm.max_children = 40	# 最多40个进程
pm.start_servers = 10	# php-fpm启动时候有10个进程
m.min_spare_servers = 5	# 最小空闲5个进程
pm.max_spare_servers = 10	# 最大空闲10个进程


http://www.niftyadmin.cn/n/1146465.html

相关文章

mybatis foreach listintager

SELECT * FROM t_employee WHERE id IN (1, 2, 3, ...)/** 根据传入的 id 集合&#xff0c;查询出对应的员工信息&#xff0c;并使用集合保存信息 */List<Employee> getEmpsByConditions(Param("list") List<Integer> idList);<select id"getEmp…

【java】特殊字符导致用正则表达式进行字符串替换失败,Java replaceAll()方法报错Illegal group reference

String str "给商品||?>\\n阳澄湖大闸蟹!#$%^&*()_-?:\",.]\\|~.,\/??\\\\|\\br点赞"String tradeDescription "||?>\\n阳澄湖大闸蟹!#$%^"; String description "给商品 #goodsName# 点赞"; String result description…

互联网先锋谷歌开始将触角伸向汽车业

就在通用、福特等汽车巨头不断亏损之际&#xff0c;互联网先锋谷歌却将触角伸向了汽车业。近来&#xff0c;关于谷歌(GOOGLE)将要进军汽车业的传闻不时泛起&#xff0c;各类报道也并不完全是捕风捉影。有报道显示&#xff0c;谷歌于一年前设立了PHEV领域(可外接充电式混合动力汽…

CENTOS7部署tomcat及其负载均衡

Tomcat服务器&#xff1a; 是一个免费的开放源代码的Web应用服务器&#xff0c;属于轻量级应用服务器&#xff0c;在中小型系统和并发访问用户不是很多的场合下被普遍使用&#xff0c;是开发和调试JSP程序的首选。一般来说&#xff0c;Tomcat虽然和Apache或者nginx这些web服务器…

【JVM】程序员进阶JVM(四)——内存泄漏和内存溢出

内存泄漏与内存溢出的区别 内存泄漏&#xff08;Memory Leak&#xff09; 进程中某些对象已经没有使用的价值了&#xff0c;但是他们却还可以直接或间接地被引用到GC Root导致无法回收。当内存泄漏过多的时候&#xff0c;再加上应用本身占用的内存&#xff0c;日积月累最终就会…

土豆网因盗播《射雕英雄传》再吃天价官司

日前&#xff0c;北京瑞亚阳光文化传媒有限公司正式决定对土豆网提起诉讼&#xff0c;原因是土豆网盗播了该公司发行的热剧《射雕英雄传》。一直以来视频分享网站风起云涌&#xff0c;硝烟不断。土豆网被太阳(《太阳照旧升起》的官司)伤过&#xff0c;被石头(《疯狂的石头》官司…

负载均衡群集含义及算法

群集的含义&#xff1a; 在互联网应用中&#xff0c;随着站点对Cluster&#xff0c;集群、群集 由多台主机构成&#xff0c;但对外只表现为一个整体 硬件性能、响应速度、服务稳定性、数据可靠性等要求越来越高&#xff0c;单台服务器力不从心 解决方法 使用价格昂贵的小型机…

@Scheduled 注解定义

Component public class ScheduledTasks {private static final SimpleDateFormat dateFormat new SimpleDateFormat("HH:mm:ss");/*** Scheduled(fixedRate 5000) &#xff1a;上一次开始执行时间点之后5秒再执行Scheduled(fixedDelay 5000) &#xff1a;上一次执…