WEB项目中除了单元测试,还经常需要多线程测试一个方法是否存在并发问题,或者是否有性能问题。每次都要写测试代码总是一件很累的事情。于是写了这一个多线程测试的类库,用来进行快速的多线程并发测试。
多线程并发测试由以下步骤完成:
- 创建并发测试的线程数,先创建的线程等待最后一个线程创建完成。
- 所有线程执行待测试的方法,返回测试的结果。
- 等所有线程执行完成后,进入思考时间等待。
- 继续进行循环测试。
WEB项目中除了单元测试,还经常需要多线程测试一个方法是否存在并发问题,或者是否有性能问题。每次都要写测试代码总是一件很累的事情。于是写了这一个多线程测试的类库,用来进行快速的多线程并发测试。
多线程并发测试由以下步骤完成:
上个月公司项目需要,在腾讯社区开放平台部署了基于mono的腾讯校友应用“公务员考试”。经过一周的观察,发现问题非常大。
2月18日到2月24日的平均值在70.91%。而2月23日-3月1日平均值在76.61%。占用的CPU非常高。在访问用户数不高的情况下,单是MONO的守护进程就占用了75.0%的CPU。
生产环境上是用Apache+mod_mono来做WEB站的,总的来看,对于WEB负载,MONO的情况并不理想。
随着公司项目的进一步推广,用户数量的增加,已经面临着单台服务器不能负载的问题。这次的优化由于时间关系主要分两步走,首先优化应用层代码以提高单台服务器的负载和吞吐率。之后再进行分表,引入队列、MemCached等分布式应用。
项目背景:这是一个在线竞赛的项目(http://race.gwy.591up.com),在竞赛的时间段内数据库的写入压力很大。
当前问题:1、服务器带宽压力。2、数据库压力。
任何一个优化都要针对已经存在的问题,从服务器监控的报表可以看到我们这个网站应用服务器带宽压力、数据库服务器带宽压力都很大,应用服务器的CPU使用率不高,因此,主要的优化是对应用服务器带宽和数据库服务器的写入压力做的优化,因为目的很明确,效果也是比较明显的。
对于SaaS应用的可伸缩,最理想的情况:随着用户数的增大,系统架构不用做调整,而仅需要增加/增强相应的硬件设备(应用服务器、数据库服务器)即可。而通常强调的应用架构具有可伸缩性,一般指的是可以实现”Scale out”,即水平扩展或者向外扩展。而”Scale up”通常为垂直扩展或者向上扩展,也就是增强硬件设备,这种方式几乎是任何应用架构普遍适用的,但是通常都会面临高成本的问题。
1、应用服务器层的水平扩展。实现应用服务器层的负载均衡,是实现应用服务器水平扩展的最主要手段,具体实现负载均衡的策略有以下两种:a.基于硬件负载均衡设备实现负载均衡,如F5设备。b.基于软件的方式实现负载均衡,例如通过配置Apache Http Server。
2、数据库层的水平扩展。相对于应用服务器层的水平扩展,数据库层的水平扩展更难实现。实现数据库的水平扩展也有多种方式。
Multi-Tenant(多租户)的SaaS可以从数据库优化、应用层优化、Web层优化这几个方面来提高SaaS的性能。
1、数据库层性能优化
2、应用层性能优化
3、Web层性能优化