nginx的外部及内部优化问题:
软件外部:我们首先从外部说起,外部主要是搭建nginx的物理设施。
静态页面:
1.磁盘的读写速度。
因为静态网页主要是从磁盘中调取。
2.网卡的带宽。
如果你电信宽带是1000M的网速,但是你的网卡只支持10M的速度。这是万万不可采取的。
动态页面:
1.磁盘的读写速度。
2.网卡的带宽。
3.cup的性能。
因为动态网页是由脚本构成的。每次访问动态网页其实是cup运行脚本。这里cup性能越好,访问速度越快。
当然脚本的精简度,也能影响到速度。
软件内部的设置:这个软件配置文件里的设置。
1.并发量的设置。
把nginx的cup使用数调到与服务器的cpu数相同。使服务器全cpu运行
worker_processes 电脑的cpu数; nginx配置文件里有,不需要手打
要把每个worker的最大支持并发数调到最大
worker_connection 65535; 调到2的16次方
2.内核中的参数的设置.
ulimit -Hn 文件数 硬性设置(临时)
ulimit -Sn 文件数 软性设置(临时)
永久设置文件:/etc/security/limits.conf
* soft nofile 文件数 软
* hard nofile 文件数 硬
这里的*是带表所有用户的意思,如果把*改为tom,则对tom单独设置.
nofile 中 no 是数字的意思.
ab -c 人数 -n 文件数 http://ip/ 这是做测试用的命令,注意:文件数一定是人数的整数倍,
文件数不能超过20000,否则会报语法错误.
3.对url地址长度的设置. 也就是常见的414报错
client_header_buffer_size 1k; 默认为1k
large_client_header_buffers 4 4k; 最大请求给它4*4=16k空间
注意:不要给它太大空间,因为每多一个访问就会占用一个16k
4.定期清除静态页面的缓存
location ~* (jpg|png)${
expires 30d ; 每30天清空一次以jpg png结尾的文件
}
5.日志的切割. 便于日后的日志数据分析
mv access.log access.log.old 把原本的日志文件改个名字
kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
告诉nginx我把日志文件拿走了,你必须在创建一个新的日志文件.
如果不执行这一步,系统将还会把日志存储到改名后的文件中.
6.利用gzip给网页进行压缩处理
gzip on; 打开
gzip_min_length 1k; 1k以下的不使用gzip
gzip_comp_level 4; 1-10 数值越大压缩越完整,但速度越慢,时间越长。
gzip_types 文件类型 什么文件需要压缩,就添加什么文件类型
7.服务器内存缓存
http { open_file_cache max=2000 inactive=20s;
inactive是无人访问时 对服务器而言,给客户端断开不再让客户端占用我的资源
对客户机而言.没人访问时就是每20秒刷新一次
open_file_cache_valid 60s;
这个60s是你一直访问我也60s时给你刷新一次
open_file_cache_min_uses 5;
访问超过5次被缓存
open_file_cache_errors off;
缓存如果被关闭了,不要向日志文件里发出报错
date'4/21/0:56'