标签:connect 过程 licensed 不可用 公司 mil nis receive current
为什么我会写这一篇博客,由于近期非常多京东云擎jae的用户反应一个问题就是他们部署在jae上面的应用訪问非常慢,有极少数应用甚至常常出现504超时现象。当然大家首先想到的是jae性能太差,这也是人之常情,往往出现什么错误的时候首先想到是别人的不好。工作中非常多同事也是这样,假设软件系统出现一个bug首先怀疑的肯定不是自己写的代码。今天花时间写这一篇博客主要就是告诉大家如何确定我们部署在PAAS平台(不不过JAE哦)web应用为什么慢?慢在哪儿了?有什么方法能够解决?
上面三点主要总结于web应用的訪问路径。由于訪问PAAS平台的web应用首先须要经过网络,然后经过PAAS平台的过滤和转发等处理,最后才到达web应用本身处理。这三个环节不论什么一个出现故障都会导致web应用訪问变慢。知道原因了,我们还须要推断究竟是哪一个环节出现了问题,以下就说说如何定位详细的环节。
为了定位这样的原因希望大家把应用部署在自己本地使用web性能測试工具做验证就可以,比如比較经常使用的web性能測试工具ab,这个事apache自带的測试工具,ubuntu下安装和使用都很方便,比如我们直接在控制台中输入ab。假设没有安装,ubuntu系统会例如以下提示:
The program ‘ab‘ is currently not installed. You can install it by typing:
sudo apt-get install apache2-utils
然后安装提示安装就可以,成功安装以后我们就能够使用ab软件对我们部署在本地的web应用进行性能測试评估了,命令例如以下:
ab -n1000 -c10 http://localhost/
上面命令的意思是总共发送1000次请求,每次10各并发请求。訪问的路径就是本地webserver的根路径。结果例如以下:
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 localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests
Server Software: Apache/2.4.6
Server Hostname: localhost
Server Port: 80
Document Path: /
Document Length: 177 bytes
Concurrency Level: 10
Time taken for tests: 0.075 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 446000 bytes
HTML transferred: 177000 bytes
Requests per second: 13283.74 [#/sec] (mean)
Time per request: 0.753 [ms] (mean)
Time per request: 0.075 [ms] (mean, across all concurrent requests)
Transfer rate: 5785.69 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.1 0 1
Processing: 0 1 0.2 0 2
Waiting: 0 0 0.2 0 2
Total: 0 1 0.1 1 2
ERROR: The median and mean for the processing time are more than twice the standard
deviation apart. These results are NOT reliable.
Percentage of the requests served within a certain time (ms)
50% 1
66% 1
75% 1
80% 1
90% 1
95% 1
98% 1
99% 1
100% 2 (longest request)
上面详细每一项代码什么意义能够网上查找,这里我们主要关心一下例如以下这个选项:
Requests per second,从结果看这个值是13283.74 [#/sec] (mean),表示每一秒钟能够处理13283.74各请求。由于我这个非常easy的一个静态页面(就是apacheserver安装后默认的首页),所以看起非常不错,并且是通过本地localhost。没有经过网络。
我们能够改变訪问的条件持续做非常多组測试。比如我把并发请求数改为100,即-c100,得到參数值为:
Requests per second: 11843.29 [#/sec] (mean)
明显比上面降低了一些,继续改总请求数为10000,并发数1000,即-n10000 -c1000得到例如以下值:
Requests per second: 747.98 [#/sec] (mean)
这个时候降低的相当的可怕了,所以通过这个ab測试工具就行知道我们的web应用可以承担多少的并发訪问,当然我们可以通过不断的挑战參数进行測试,然后绘制成一个曲线图观察就非常方便看出我们web应用的最佳性能点。超过那么最佳性能点可能就导致性能下降。那么訪问速度也就跟着下降了。
当然仅仅看上面一个參数看不出详细一个用户訪问所须要等待的时间,还有一个參数能够看出。我相应三次的測试这个參数值分别例如以下:
Time per request: 0.753 [ms] (mean)
Time per request: 8.444 [ms] (mean)
Time per request: 1336.942 [ms] (mean)
从三次測试能够看出,随着并发数的增长。一个用户平均等待的时间也在变长,这个终于就反应到用户web訪问的结果(速度的快慢),这里測试的仅仅是一个简单的静态网页,假设是复杂的动态网页(比如訪问数据库,读写磁盘和大量的计算等)那么就更加复杂了。一个请求的快慢因为web应用须要处理的业务逻辑有非常大的关系,当然如何让这些业务逻辑运行更快而且并行运行,这个就须要程序实现者考虑了。
至于PAAS平台自身的原因。大家就更不用操心了。他们比你们更关系自身PAAS平台的性能,由于上面托管着成千上万的web应用。他们时时刻刻都在关系着自身平台的性能拼劲,想着各种方法优化。
假设PAAS平台的原因导致用户部署的web应用訪问非常慢甚至不可用那么这个PAAS平台自身也做不下去的。
最后还想强调一点就是web应用自身的性能优化问题,如今各种语言都提供了非常好的开发框架,理论上都是稳定的而且性能是不错的,当然特殊场景须要特殊考虑。
可是我们自身在设计web应用的时候可能须要考虑的很多其它,不要妄想一个简单的开发框架就能解决全部的问题,尤其是性能问题。设计到web应用优化的知识和技术非常的多也非常的复杂,还有非常多场景,所以这是各长久的过程。后面有机会也会给大家介绍一些web性能优化的方法和技术,而且结合实际场景进行分析和演练。
标签:connect 过程 licensed 不可用 公司 mil nis receive current
原文地址:http://www.cnblogs.com/clnchanpin/p/6917238.html