优化nignx

优化Nginx并发量

1)优化前使用ab高并发测试

客户端测试
# yum -y install httpd-tools.x86_64
# ab -c 200 -n 200 http://192.168.4.5/

# 192.168.4.5后面的斜线 / 必须要敲。c代表client。ab是模拟器。n是number。200个人总共点了200次,相当于每个人1次。
-----------------------------------------------------------------------------------------------
优化前,客户端访问次数太多会报错!

# ab -c 2000 -n 2000 http://192.168.4.5/
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 192.168.4.5 (be patient)
socket: Too many open files (24) #提示打开文件数量过多
-------------------------------------------------------------------------------------------------
# lscpu
...
CPU(s): 1 #虚拟机默认1核,真机4核

脚本要求有好的cpu
数据库要求有好的内存
-------------------------------------------------------------------------------------------------
2)修改Nginx配置文件,增加并发量

# vim /usr/local/nginx/conf/nginx.conf

#user nobody;
worker_processes 1; #与CPU核心数量一致
... ...
events {
worker_connections 50000; #修改为50000。每个worker最大并发连接数
}

# nginx -s reload
-------------------------------------------------------------------------------------------------
3)优化Linux内核参数(最大文件数量)

# ulimit -a #查看所有属性值
.....
open files (-n) 1024 #能同时打开多少文件:最大数量是1024

# ulimit -Hn 100000 #设置硬限制(临时规则)。应限制只能在这个数内。重启后回到1024。
# ulimit -Sn 100000 #设置软限制(临时规则)。软限制只是给个提醒,超过了也没有关系。重启后回到1024.

4)优化后测试服务器并发量(因为客户端没调内核参数,所以服务器自己proxy测试)
客户端不能测试,因为客户端要访问也要开那么多个进程,他没有改,调不了。如果真改了,对服务器而言就相当于是攻击了。

# ab -c 2000 -n 2000 http://192.168.4.5/
# ab -c 4000 -n 4000 http://192.168.4.5/
------------------------------------------------------------------------------------------------------
步骤四:优化Nginx数据包头缓存

1)优化前,使用脚本测试长头部请求是否能获得响应

/root/lnmp_soft/buffer.sh,是老师提前写好的脚本,能够生成很长的地址。

# cat buffer.sh
#!/bin/bash
URL=http://192.168.4.5/index.html?
for i in {1..5000}
do
URL=${URL}v$i=$i
done
curl $URL #经过5000次循环后,生成一个长的URL地址栏
-------------------------------------------------------------------------------------------
2)修改Nginx配置文件,增加数据包头部缓存大小
# vim /usr/local/nginx/conf/nginx.conf

#注意事项,要先把proxy_pass注释掉,然后在http{}里面的前面添加2行。
#实验环境里面最大

http {
include mime.types;
default_type application/octet-stream;
client_header_buffer_size 1k; #默认请求包头信息的缓存。加上这2行,可以调缓存(内存)大小,也就是buffer
large_client_header_buffers 4 1m; #大请求包头部信息的缓存个数与容量。实验里最大缓存是4个1m,但是工作中4个4k就够了!!
...
}

要记住client_header_buffer_size和large_client_header_buffers后面是不一样的,没有_size!!!而且buffers!!!多了一个s!!!

# nginx -s reload

3)优化后,使用脚本测试长头部请求是否能获得响应
# ./buffer.sh

 

posted @ 2019-04-29 00:20  安于夏  阅读(162)  评论(0编辑  收藏  举报