ASP.NET权限组件,生成10万条测试数据检测程序的大数据性能改进
2013-02-14 15:48 通用C#系统架构 阅读(2749) 评论(3) 编辑 收藏 举报不管开发什么系统,都考虑大数据量的问题,把大数量优化都做一做,例如开发一个权限管理系统,就会考虑有几万个用户,几千个组织机构,把很多精力都放在系统大数据的优化上。 后来发现有些过度设计,真正购买我们系统的人大多是小企业,甚至是微型客户,例如用户只有几个或者几十个,有几百人的都不是非常多,自从那以后又把精力转移了,把很多精力放在业务功能的分析,软件是否好用好操作上,是否操作友善等等,这样坚持了好几年,效果很明显软件越来越功能好用了。 软件的功能好用了,比较稳定了后,有些大客户就看上我们的组件了,他们一用发现当有接近1万个用户时,软件的很多页面就性能比较低了,因为前几年主要精力都放在软件的操作是否好用上而没关注大客户的大数据量的性能问题上。 年前遇到一个客户反馈,当用户数量超过5000后,有些页面运行速度缓慢,正好利用春节把软件的大数据时的性能问题重新抓了个重点,把每个遇到大量用户时的页面功能都增加了分页功能。
1:如何快速产生10万个测试用户?同时在产生测试用户时能验证一下程序的多用户并发时的稳定性?考虑到这个因素,我写了一个脚本程序每次产生100个测试用户数据,然后再写个多线程的程序,每点一次并发启动100个线程,这样一次可以产生1万条演示数据,连续点上10次,就可以产生10万条演示用户数据了。同时也验证了数据库访问组件、底层数据控制函数类的多用户并发下的安全性、稳定性,确保没有大并发的程序紊乱问题,用人工去测试这个比较费劲,直接写个多线程的脚本测试函数相当轻松愉快就可以搞定这个问题了。当然也可以启动10次应用程序,每个程序同时启动100个多线程来测试一下多用户并发的模拟测试也是非常不错的,下面可以看测试效果图。
2:虽然没有绝对通用,但是可以有相对通用,例如我们的权限管理系统大致有5000个功能点,当你有任何类似需求时,在5000个功能点的基础上再进行2次开发,那会是非常省心省事,而且还稳定高效,与其他开发人员开发的系统有更好的兼容性,当然我们的组件也会持续进行改进维护,将来也可以拿到更强大的组件。可以把精力放在核心的业务系统的开发上。
通用权限管理系统组件里,大用户优化的页面主要有如下九个页面。 FrmUserSelect 用户选择页面 FrmUserAdmin 用户管理页面 FrmUserAudit 用户审核页面 FrmUserPermissionAdmin 用户权限管理页面 FrmLogGeneral.cs 用户访问日志 FrmUserTreeResourcePermission.cs 用户组织机构权限 FrmUserModulePermissionBatchSet.cs 用户菜单权限 FrmUserPermissionItem.cs 用户操作权限项目页面 FrmUserResourcePermission.cs 用户选项(字典)权限
忙乎了好几天,用10万多个测试用户感受了一下通用权限管理系统组件的大数据性能,每个页面运行起来快了很多了,几乎没什么等待时间了,这还是在我的笔记本上的运行的,在服务器上应该会更快一些。今天是2013年2月14日情人节,中午把女儿带到杭州动物园让她们进去里面玩了,我在门口调试调试程序等女儿玩好出来,外面下着小雨空气非常不错很清新。这个春节最大的收获就是用10万的数据压力测试了一下多年精心维护的组件,也算有些得到安慰了,这个春节没白过也有工作上的成果了,否则还真有罪恶感天天吃吃睡睡、睡睡吃吃就度过春节了也不太好。
10多年前,那时候我们还在用sql2000时,业务数据量达到10万条后,系统的性能就开始明显下降了,搞各种优化很是费力,不过那时候的电脑的性能也没现在这么强大,当时觉得10万条数据真的好多啊,现在经常遇到上千万条的数据后,觉得10万条数据太少了,也就是入门级别的数据量一样的感觉了,电脑的性能在提高、自己的开发水平在提高、数据库技术也在不断提高!
这下也算是可以给杭州的那个服装公司的客户有个交代了,他们全国各地的加盟店什么的用户算在一起就有6000个以上的用户了,最近2-3年一直用500左右的用户做测试,没太注意关注大数据量的优化问题,这下心里的一个石头也落下来了,继续慢慢推广“通用权限管理系统组件”省心省事,兼容统一各种业务系统的用户权限配置管理,促进重复利用劳动成果的理念继续坚持。