在MVC 3.0中使用MS Chart
MsChart是微软制作的功能强大的图表工具,用它可以很方便的建立各种图表。博客园里也有各种MS Chart在MVC中的用法,都不是很满意,要么要加handler,要么在视图中用,感觉各种不好。琢磨了下,也google了一些资料,最后决定用下面这种方式来实现。
MsChart是微软制作的功能强大的图表工具,用它可以很方便的建立各种图表。博客园里也有各种MS Chart在MVC中的用法,都不是很满意,要么要加handler,要么在视图中用,感觉各种不好。琢磨了下,也google了一些资料,最后决定用下面这种方式来实现。
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层性能优化
继上篇文章《Mono的兼容性问题》之后,现在总结一下我在suse 10中部署mono环境遇到的一些问题及其处理办法。
腾讯社区开放平台提供的体验区的服务器环境是这样的:Linux version 2.6.16.60 (gcc version 4.1.2 20070115 (SUSE Linux))
这个Linux内核的版本号应该是SLES(SUSE Linux Enterprise Server 10 SP2)的操作系统。mono原来的版本号是1.2.2,而我们需要2.8.2的mono。腾讯的服务器是没有配置dns解析功能的,所以不能直接用yast2来通过更新源来升级mono;对于可以用yast2安装的,可以参考我的《在openSUSE中部署基于apache的mono环境》。而用rpm手工安装,太多的程序依赖处理起来很麻烦,只好用通过编译mono源码的方式来安装了。
最近公司的一个项目因为要接入腾讯开放平台,需要转移到mono环境中,在做mono兼容性调整的时候遇到了一些问题,记录下来跟大家分享一下。
总的说来,mono整体的兼容性是非常不错的,在linux中跑起来很流畅,mono 2.8.2已经不再是玩具了。关于mono,园子里的geffzhang有很深入的研究,有兴趣的同学可以去看看他的博客。
ASP.NET 应用程序生命周期的各个阶段描述,列出重要的生命周期事件,并描述如何编写适合应用程序生命周期的代码。在 ASP.NET 中,若要对 ASP.NET 应用程序进行初始化并使它处理请求,必须执行一些处理步骤。此外,ASP.NET 只是对浏览器发出的请求进行处理的 Web 服务器结构的一部分。了解应用程序生命周期非常重要,这样才能在适当的生命周期阶段编写代码,达到预期的效果。