应用程序方面的优化
nginx应用程序配置文件优化
1、启用epoll开发模型,使用的是IO多路复用技术,支持异步非阻塞处理请求
2、调整worker_processes的数量,设置工作进程数,一般与cpu核数相同,或者是auto,自动识别;
3、添加worker_cpu_affinity ,将工作进程与cpu静态绑核
4、修改worker_rlimit_nofile和worker_connection参数,设置单个worker可接受的并发数量
5、开启gzip网页压缩;
6、使用expires,设置客户端页面缓存时间
7、调整keepalive_timeout和keepalive_request设置长连接超时间和单个长连接可接受的最大请求数量
nginx应用程序的配置文件安全优化:
1、隐藏版本号,开启server_tokens
2、修改进程运行的用户和组,一般在程序配置的时候指定nginx,或者是可以修改配置文件中的user
3、添加防盗链,使用rewrite模块,重写URL
4、修改limit_conn和limit_req的模块参数,限制单个ip的最大访问数量和访问频率
nginx的日志分割
编写日志分割脚本 + crontab 周期性做日志管理
系统内核优化:
/etc/sysctl.conf 内核参数配置文件
net.ipv4.tcp_tw_reuse = 1
##开启重用,允许将TIME-WAIT sockets重新用于新的TCP连接
net.ipv4.tcp_tw_recycle = 1
##开启TCP连接中TIME-WAIT sockets的快速回收
net.ipv4.tcp_fin_timeout = 30
##修改系统默认的 TIMEOUT 时间(MSL值),原本是60s
net.ipv4.tcp_max_tw_buckets = 5000
##系统同时保持TIME-WAIT的最大数量
net.ipv4.ip_local_port_range = 1024 65535
##外向连接的端口范围
net.ipv4.tcp_max_syn_backlog = 8192
##系统能接受的tcp半连接的最大队列数
net.core.somaxconn = 10000
##每一个端口最大的 Listen 监听队列的长度
net.ipv4.tcp_keepalive_time = 1200
##发送keepalive探测包消息的频率
net.ipv4.tcp_syncookies = 1
##开启SYN Cookies,当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击
/etc/security/limits.conf 内核限制文件
* soft noproc 65535 打开的进程数
* hard noproc 65535
* soft nofile 65535 打开的文件数
* hard nofile 65535
* soft memlock unlimited 不做内存锁定
* hard memlock unlimited