你的位置:首页 > ASP.net教程

[ASP.net教程]高性能,高并发


1.负载均衡,加服务器分流 
    1)nginx做负载服务器,分发处理请求,ip_hash依据ip定位服务器,防止session不共享处理。 
2.代码尽量优化 
    1)包括常用写法,for循环变量等等,网上很多资料。 
    2)消耗资源和占用内存多的,都必须处理分批处理,比如批量处理txt文档,如果txt文档大于1w个,Apache ftp如果一次加载完,必然内存溢出,必须分批次处理,一次加载1000或者5000依据情况而定,最好使用多线程处理,比如读txt和处理txt,读线程池解决,CountDownLatch类处理线程池做任务的先后顺序。 
    3)用完资源及时关闭,对读取文件和连接还有socket等等 
    4)对httpclient请求,请求时间等待时间等等处理。 
3.减少对数据库访问,最好批量插入。 
    1)系统启动时候启动线程处理队列,如果需要插入sql,把sql放入队列,线程定时处理这些sql。 
4.缓存,增加缓存,增加访问速度。 
    1)memcached支持的语言最多,只支持key-value 
    2)redis对java支持最好,用的最多支持类型比memcached多。 
5.缓存集群解决规模大的访问请求,主从复制一般小中型项目可以解决了。 
    1)无论memcached和redis都可以集群处理大型系统项目 
    2)我只用过redis主从复制,这个一般就可以解决大部分问题,只需写一个redis服务器,其他服务器自动复制,这样就可以访问这些服务器缓存数据。 
6.限流,随机一些访问跳到宣传页面。 
1)限流,没有办法的办法,对访问限制很好解决并发数多的请求。 
7.对数据库访问高效率 
    1)jndi和druid,bencop选择合适的连接池,依据经验处理吧。 
8.使用队列,一些操作可以使用多线程解决 
    1)activemq可以异步处理消息,也可以自己用jdk5线程池处理。 
    2)dubbox不知道对异步处理怎么样,需要我写demo,目前没测试。 
9.分层,分隔,分布 
    1)我做过三种这种类型的项目开发,一种是建很多java工程,编译到web工程下面,没增加一个模块建一个工程,劣势要是使用某个模块很麻烦。 
10.异步,使用队列,请求无需等到回应可以返回,队列处理这些请求! 
11.高性能,程序员从加缓存,负载均衡,队列处理消息等处理。 
12.高并发,web端页面样式图片存放服务器,最好放在负载均衡那台服务器,减少网络传输影响 
    1)web端的css,js,图片等等放到nginx,减少网络传输开销,最好处理方式 
    2)减少http请求,每个请求都需要耗费性能,不需要的请求可以减少,最好把数据准备好,一次请求搞定


获取【下载地址】