chenyx
发表于 2012-01-17 20:17
yanyangtian4502 发表于 2012-01-17 16:13 static/image/common/back.gif
说道优化,其实话题说不完!
当是12306扛不住了,就上了很多的服务器,也采用了群架等技术,这确实可以很快 ...
据网上的报道,铁道部还是缺钱的,并且缺口还很大.
gotolinux
发表于 2012-01-17 20:45
回复 31# yahoon
其实高并发的来源还是他自己的定时放票,只有这么几个时段,买不到票的当然往死里刷了。
chenyx
发表于 2012-01-17 21:06
本帖最后由 chenyx 于 2012-01-17 21:07 编辑
gotolinux 发表于 2012-01-17 20:45 static/image/common/back.gif
回复 31# yahoon
同意,认为造成流量集中.流程还是有很大改进空间的
村口老柳树
发表于 2012-01-17 22:50
觉得后台的数据库没有把各个车次分开,或者说订单没有分开,导致太多的系统资源争用,所以在点击订票的时候一直订不上
yanyangtian4502
发表于 2012-01-17 23:01
本帖最后由 yanyangtian4502 于 2012-01-17 23:07 编辑
基本可以从以下几个方面进行考虑:
1.如何使得服务器更快的处理请求
2.如何使得响应更快的发送到客户端
3 减少不必要的请求
首先我们从站点本身的设计来看:
1.如何使得服务器更快的处理请求:那么就要充分的利用服务器的每一点资源:内存,CPU,缓存,线程,数据库
对于内存:因为程序是用Java写的,那么就需要注意:
a. java对象的回收与释放,不要认为这不是问题,一般站点,常常有很多的对象提供功能,加上10000个对象,不多吧,现在假设,每次请求,都需要产生1000个新的临时对象处理这个请求(其余的9000个对象是所有请求都要使用的),假设每个对象占1k,1000个就约等于1M,也就说,每次请求,需要产生1M的对象内存,如果访问量就是千万级别,想想看,吓人吧。很多人认为java有垃圾回收机制,不用管,能不管吗?
b. 注意系统资源的使用。站点免不了要去操作文件,线程等系统的一些资源,那么,使用完之后,要注意释放,一是为了避免其他请求等待,也是使得内存快速回收。
c. 在使用cookie和session之前,要算笔账:性能和安全的。如果真要使用session,就要考虑很多的问题,举个数据,大家就明白了:一般session的有效时间是20mins(可以自己设置了),假设每个用户在站点停留10min,不过分吧,买票嘛,总的看看,输入信息吧。那么用户的session存活期就是30min了。
假设每秒100个请求访问站点,而每个用户发送5个请求,这个时候,站点就是100/5,每秒20个用户访问站点。假设那么,在session存活期内(30min),站点的session个数就是:60*30*20=36000个,想想看,即使每session只保存1k的数据,也是36M,这还是只有100请求的情况,如果请求是千万级别,想想看。
对于CPU:不要认为服务器CPU牛X,就随便搞。注意的请求很多:
a. 考虑多线程的使用,不要没事就开线程。线程开启需要CPU分配,调度,管理啊!
b.不要没事就try..catch到处搞。异常捕捉需要遍历调用堆栈的,那个效率~~~。
c.加密解密要注意个度,因为这些算法消耗内存和CPU,也需要CPU大量的计算
d.不要频繁读模板,该缓存的就缓,不要总是拼接,替换,要注意缓冲池的使用。
e.正则表达式要注意使用,要使用编译后的,最好是编译后缓存起来,下次直接使用。正则表达式也是一种语言,需要分法,词法分析,很复杂的,懂编译原理应该明白这个道理。
f. 注意CPU喜欢减法操作,考虑用位操作替换浮点操作,不要认为是小事,千万级别问题就大了。
...
然后我们从运维方面看:
写累了,歇一会在写
随便写写,一大堆。
yanyangtian4502
发表于 2012-01-17 23:05
其实仔细想想,编写程序很容易!
但是编程好的程序,真是不容易!
考虑的问题,涉及到的知识广度,深度
gotolinux
发表于 2012-01-17 23:48
yanyangtian4502 发表于 2012-01-17 23:01 static/image/common/back.gif
基本可以从以下几个方面进行考虑:
1.如何使得服务器更快的处理请求
2.如何使得响应更快的发送到客户端
非常赞同。现在的程序员跟C时代的程序员简直没法比。以为有了垃圾回收就不用管内存了,太注重应用本身的功能性,而忽视了程序的细节处理、资源利用。
gotolinux
发表于 2012-01-18 00:02
村口老柳树 发表于 2012-01-17 22:50 static/image/common/back.gif
觉得后台的数据库没有把各个车次分开,或者说订单没有分开,导致太多的系统资源争用,所以在点击订票的时候 ...
嗯,这个也不错。还有一点,很多购票者都是临时注册,临时购票,而且会多次注册,利用多个ID来抢票。这一方面也会增加系统的负载。
用户注册和用户购票可以进行应用分割,后端数据同步。这就是我前面提到的用户信息(数据库)和票务信息(数据库)分离。
阿辉
发表于 2012-01-18 09:18
yanyangtian4502 发表于 2012-01-17 16:06 static/image/common/back.gif
说实在的,我之前没有使用过12306,最近也是看到很多朋友放映12306不给力,我就看了下!
首先不说别的,页 ...
这个是问题,但不是目前的瓶颈,因为它也是有做cdn的,目前的瓶颈不在这块,打开1230**的首页还是很快的,只是打开动态页面时才慢,明显是服务器问题。
当然他们做cdn也有问题,动态内容也走cdn了,并不是一个很好的方式,个人认为动态内容也走cdn会导致更慢,虽然cdn厂商不这样认为。
sania9
发表于 2012-01-18 09:19
gotolinux 发表于 2012-01-17 19:04 static/image/common/back.gif
我认为这篇讨论大部分地方可以参考:http://bbs.chinaunix.net/thread-3626937-7-1.html
主要值得提出来 ...
顶一记,分省部属分流确实不错!
页:
1
2
3
4
5
[6]
7
8
9
10
11
12
13
14
15