对于高性能网站的架设,主要就是请求量大,那我们该如何进行支撑?

考虑到下面的几个方面:

1.要减少请求,那对于开发人员来说,网站的css文件进行合并,背景图片也要合并,一般都是请求一张比较大的图片,然后在进行分割,然后就是减少mysql的查询。

2.对于前端的nginx,我们使用nginx的expire参数,利用浏览器的缓存等,来减少后端服务器的查询。

3.对于前端的静态的文件,我们使用cdn来进行分发请求。

那到了最后一步,不可避免的请求-----我们呢可以使用服务器集群+负载均衡来支撑。

所以在前面三个阶段进行简单的优化后,到了最后一步,我们呢就不要再考虑减少请求这个方向了,而是思考如何更好的响应高并发的请求了

 

有一个大的认识----既然响应是不可避免的,我们要做的就是把工作的内容“平均”分给每台服务器上。

最理想的状态是,每台服务器的性能呢都能被充分的利用。

 

接下来测试一下nginx的一个并发量和它的一些调优:

首先编译的时候,我们需要加上一个nginx的统计模块,

1 ./configure --prefix=/usr/local/nginx --add-module=/root/src/ngx_http_consistent_hash-master/  --with-http_stub_status_module

在配置文件中,我们可以这样:

1 location /status {
2     stub_status on;
3 }

我们在另一台机器上,使用ab进行压测:

1 /data1/http2/bin/ab -c 2000 -n 50000 http://10.210.237.222/index.html

接下来看一下最终的结果:

 1 This is ApacheBench, Version 2.3 <$Revision: 655654 $>
 2 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
 3 Licensed to The Apache Software Foundation, http://www.apache.org/
 4 
 5 Benchmarking 10.210.237.222 (be patient)
 6 Completed 5000 requests
 7 Completed 10000 requests
 8 Completed 15000 requests
 9 Completed 20000 requests
10 Completed 25000 requests
11 Completed 30000 requests
12 Completed 35000 requests
13 Completed 40000 requests
14 Completed 45000 requests
15 Completed 50000 requests
16 Finished 50000 requests
17 
18 
19 Server Software:        nginx/1.4.7
20 Server Hostname:        10.210.237.222
21 Server Port:            80
22 
23 Document Path:          /index.html
24 Document Length:        612 bytes
25 
26 Concurrency Level:      1000
27 Time taken for tests:   16.154 seconds
28 Complete requests:      50000
29 Failed requests:        17
30    (Connect: 0, Receive: 0, Length: 17, Exceptions: 0)
31 Write errors:           0
32 Non-2xx responses:      17
33 Total transferred:      42201629 bytes
34 HTML transferred:       30592860 bytes
35 Requests per second:    3095.22 [#/sec] (mean)
36 Time per request:       323.079 [ms] (mean)
37 Time per request:       0.323 [ms] (mean, across all concurrent requests)
38 Transfer rate:          2551.24 [Kbytes/sec] received
39 
40 Connection Times (ms)
41               min  mean[+/-sd] median   max
42 Connect:        0   98 475.5      5   15000
43 Processing:     0  153 762.3      6   13230
44 Waiting:        0  140 739.6      6   13230
45 Total:          1  251 931.7     12   15000
46 
47 Percentage of the requests served within a certain time (ms)
48   50%     12
49   66%     18
50   75%     27
51   80%     35
52   90%    511
53   95%   1237
54   98%   3242
55   99%   5450
56  100%  15000 (longest request)

上面是一个压测的结果,那我们使用http://10.210.237.222/status观察发现:

1 Active connections: 343 
2 server accepts handled requests
3  160843 160843 160883 
4 Reading: 0 Writing: 221 Waiting: 122 

情况并不如人意,因此我们需要进行对nginx进行调优。

 

好然后我们接下来对nginx进行调优,最终能达到1W的并发!

posted on 2015-07-30 13:58  shangzekai  阅读(617)  评论(0编辑  收藏  举报