nginx性能优化
系统结构瓶颈,业务模式,性能与安全,网络,系统,服务,程序,数据库,底层服务。
ab接口压力测试工具
//安装工具
yum install httpd-tools
//使用
ab -n 2000 -c 2 http://127.0.0.1/index.html
-n 总的请求数
-c 并发数
-k 是否开启长连接
文件句柄
Linux\Unix一切皆文件,文件句柄就是一个索引.
- 系统全局性修改
- 用户局部性修改
- 进程局部性修改
全局修改:
#编辑文件
vim /etc/security/limits.conf
#root 只是针对root这个用户来限制,soft 只是发提醒,操作系统不会强制限制,一般的站点设置为一万左右就ok了
root soft nofile 65535
root hard nofile 65535
# *代表通配符 所有的用户
* soft nofile 25535
* hard nofile 25535
针对进程
vim /etc/nginx/nginx.conf
#针对 nginx进程 句柄的文件限制
worker_rlimit_nofile 65535;
events {
user epoll;
worker_connections 10240;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
charset utf-8;
}
CPU亲和
把进程通常不会在处理器之间频繁迁移进程迁移的频率小,减少性能损耗.
//查看物理cpu
cat /proc/cpuinfo|grep "physical id"|sort|uniq|wc -l
//查看核心
cat /proc/cpuinfo|grep "cpu cores"|uniq
//详细查看 输入top之后按键 1
top
//示例 通用配置
#nginx 普通用户,一般以普通用户来跑
user nginx;
#当前启动的worker进程,官方建议是与系统核心数一直
worker_processes 16;
#方式一, 第一个work进程绑定第一个cpu核心,第二个work进程绑定到第二个cpu核心,依次内推 直到弟16个
#wokrer_cpu_affinity 0000000000000000 0000000000000001 0000000000000010 0000000000000100 ... 1000000000000000
#方式二,当 worker_processes 2 时,表明 第一work进程可以绑定第 2 4 6 8 10 12 14 16 核心,那么第二work进程就绑定 奇数核心
#worker_cpu_affinity 1010101010101010 0101010101010101;
#方式三,就是自动分配绑定
worker_cpu_affinity auto;
#日志级别
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
#针对 nginx 句柄的文件限制
worker_rlimit_nofile 35535;
#事件模型
events {
#使用epoll内核模型
user epoll;
#每一个进程可以处理多少个连接
worker_connections 10240;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
charset utf-8;
#日志打印信息
log_format main '#remote_addr';
#请求日志
access_log /var/log/nginx/access.log main;
#access off;
#静态资源处理
sendfile on;
#数据高效,不及时传递
#tcp_nopush on;
#及时不高效传递
#tcp_nodeny on;
keepalive_timeout 65;
gzip on;
#对ie6 以下的不进行压缩
gzip_disable "MSIE [1-6]\.";
gzip_http_version 1.1;
}
查看 核心绑定的nginx work进程
ps -eo pid,args,psr | grep [n]ginx