回忆了下以前nginx笔记,下面放上来一步步说,这里主要为nginx服务器软件方面.
1.先上一些常用配置与说
# nginx进程数,建议按照cpu数目来指定,如,双核四线程[逻辑4核],那么设置数建议为4*2 = 8
--worker_processes 8;
# 为每个进程分配cpu,将8个进程分配到8个cpu,可以写多个,或者将一个进程分配到多个cpu
--worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
# 这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致
ps : ulimit -n 65535(linux最大值)
sysctl -a | grep fs.file
--worker_rlimit_nofile 65535;
# Epoll: 使用于Linux内核2.6版本及以后的系统
--use epoll;
# 每个进程允许的最多连接数,理论上每台nginx服务器的最大连接数为
worker_processes*worker_connections
--worker_connections 65535;
# keepalive 超时时间
--keepalive_timeout 60;
# 客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小
也有client_header_buffer_size超过4k的情况,但是client_header_buffer_size该值必须设置为“系统分页大小”的整倍数
ps : getconf PAGESIZE 可以查看分页大小
--client_header_buffer_size 4k;
# 将为打开文件指定缓存,默认没启用,max指定缓存数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存
--open_file_cache max=65535 inactive=60s;
# 指多长时间检查一次缓存的有效信息
--open_file_cache_valid 80s;
# open_file_cache 指令中的inactive 参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive 时间内一次没被使用,它将被移除
--open_file_cache_min_uses 1;
# 这部分可以优化一些页面信息压缩
--gzip on
--gzip_min_length 1k;
--gzip_buffers 4 16k;
--gzip_http_version 1.0;
--gzip_comp_level 2;
--gzip_types text/plain application/x-javascript text/css application/xml;
--gzip_vary on;
有两个场景化的配置
1.tcp_nodelay on | off;
默认值:
tcp_nodelay on;
上下文: http, server, location
开启或关闭nginx使用TCP_NODELAY选项的功能.这个选项仅在将连接转变为长连接的时候才被启用.(译者注,在upstream发送响应到客户端时也会启用),可以和keepalive使用.
2.tcp_nopush on | off;
默认值:
tcp_nopush off;
上下文: http,server,location
选项仅在使用sendfile的时候才开启.
2.简要ulimit有关优化调试[高并发下这个参数必须调,所以着重备注下]
linux 默认值 open files 和 max user processes 为 1024
#ulimit -n
1024
#ulimit –u
1024
ulimit -a 可以查看当前系统的所有限制值.使用ulimit -n 可以查看当前的最大打开文件数.
新装的linux 默认只有1024,当作负载较大的服务器时,很容易遇到error: too many open files .因此,需要将其改大.
使用 ulimit –n 65535 可即时修改,但重启后就无效了.(注ulimit -SHn 65535 等效 ulimit -n 65535 ,-S 指soft ,-H 指hard)
修改方式有几种:
1).在/etc/rc.local 中增加一行 ulimit -SHn 65535 ,这里主要是操作系统每次启动会执行的脚本.
注意:CentOS 中使用无效果(需要自己测试,可能和系统版本与内核有关)
2).在/etc/profile 中增加一行 ulimit -SHn 65535
备注:ulimit 命令本身就有分软硬设置,加-H 就是硬,加-S 就是软默认显示的是软限制
soft 限制指的是当前系统生效的设置值.hard 限制值可以被普通用户降低.但是不能增加. soft 限制不能设置的比 hard 限制更高. 只有 root 用户才能够增加 hard 限制值.