1700452200
核心业务的响应时间。一个新闻网站的核心业务就是新闻浏览,它的衡量标准就是打开一个新闻的时间;一个邮件系统的核心业务就是邮件发送和接收速度;一个管理型系统的核心就是流程提交,这也就是它的衡量标准。
1700452201
1700452202
重要业务的响应时间。重要业务是指在系统中占据前沿地位的业务,但是不会涉及业务数据的功能,例如一个业务系统需要登录后才能操作核心业务,这个登录交易就是它的重要交易,比如邮件系统的登录。
1700452203
1700452204
当然,性能衡量标准必须在一定的环境下,比如网络、操作系统、硬件设备等确定的情况下才会有意义,并且还需要限定并发数、资源数(如10万数据和1000万的数据响应时间肯定不同)等,当然很多时候我们并没有必要白纸黑字地签署一份协约,我们编写性能衡量标准更多地是为了确定一个目标,并尽快达到业务要求而已。
1700452205
1700452206
1700452207
1700452208
1700452210
编写高质量代码:改善Java程序的151个建议 建议136:枪打出头鸟—解决首要系统性能问题
1700452211
1700452212
在一个系统出现性能问题的时候,很少会出现只有一个功能有性能问题(一个功能出现性能问题的情况非常容易解决,基本上不会花费什么时间),系统一旦出现性能问题,也就意味着一批的功能都出现了问题,在这种情况下,我们要做的就是统计出业务人员认为重要而且缓慢的所有功能,然后按照重要优先级和响应时间进行排序,并找出前三名,而这就是我们要找的“准出头鸟”。
1700452213
1700452214
“准出头鸟”找到了,然后再对这三个功能进行综合分析,运行“望闻问切”策略,找到问题的可能根源,然后只修正第一个功能的性能缺陷,再来测试检查是否解决了这个问题,紧接着是第二个、第三个,循环之。可能读者会产生疑问:为什么这里只修正第一个缺陷,而不是三个一起全部修正?这是因为第一个性能缺陷才是我们真正的出头鸟,在我做过的性能优化项目中超过80%的只要修正了第一个缺陷,其他的性能问题就会自行解决或非常容易解决,已经不成为问题了。
1700452215
1700452216
比如BBS系统,从用户登录到用户浏览、发帖都非常缓慢,经过逐步筛选,确定登录就是“出头鸟”,需要着重解决,代码如下:
1700452217
1700452218
class Login extends HttpServlet{
1700452219
1700452220
public void doGet(HttpServletRequest req, HttpServletResponse resp){
1700452221
1700452222
//从req中获得用户名和密码
1700452223
1700452224
String userName=……;
1700452225
1700452226
String passwd=……;
1700452227
1700452228
//由登录逻辑处理登录
1700452229
1700452230
boolean loginSuccess=loginBiz.login(user, passwd);
1700452231
1700452232
if(loginSuccess){
1700452233
1700452234
//登录成功,签到
1700452235
1700452236
Checker.sign(userName);
1700452237
1700452238
}else{
1700452239
1700452240
//登录不成功,记录日志
1700452241
1700452242
log.warn(userName+”,登录失败!”)
1700452243
1700452244
}
1700452245
1700452246
}
1700452247
1700452248
}
1700452249
[
上一页 ]
[ :1.7004522e+09 ]
[
下一页 ]