首页 科技资讯 科技资讯

一票难求 细数导致Web在线应用瘫痪因素

作者:赵为民

访问量太大是主因

近日各大媒体均将目光聚焦“春运”一票难求:自2012年1月1日起,全国各铁路局电话订票和互联网售票的预售期变更为12天(含购票当日),要提前于车站窗口和代售点。这让大量旅客开始在电脑旁“守株待兔”,随时刷屏等待着火车票放售。不少旅客郁闷地发现,在购票关键时刻,12306网站频频出现“系统忙”,导致无法正常提交购票订单。

据悉,2012年1月1日11:50在登录12306网站,发现页面速度比平时慢了不少。来回折腾了多次,众多用户也没能提交上购票订单。

一票难求 细数导致

网站瘫痪的原因:访问量太大是最常见的问题

“12306网站开始提前12天放售火车票,大量旅客集中在网上购票,给网站带来较大压力,甚至导致某些时间段瘫痪。”一铁路人士说。

之前,铁路部门曾要求全国各车站错时网上售票。但从首日12306网站的表现来看,这种错时并没能完全解决旅客集中登录购票导致系统瘫痪的情况。

网站因访问量过大而导致网站瘫痪的例子屡见不鲜,例如:内斯塔加盟米兰,米兰官网访问量过大导致崩溃,西班牙网上“晒”议员收入网站访问量太大崩溃,以及韩服《口袋西游》官网因访问量过大崩溃等。其实,当访问量逐渐恢复平常状态,网站就会自动恢复运行。

网速负载是主因

现实中也有许多原因可能导致网站无法正常的工作,下面我们集中分析总结一下导致网站“瘫痪”最常见的因素,希望对大家日常站点维护有些借鉴帮助。

1.带宽较小

一票难求 细数导致

宽带网速是问题

访问量大增通常是导致网站瘫痪的主要原因,难以预计的突发访问量往往使网站措手不及,网络带宽难以满足多地点并发的访问的要求,每个人均分相应网速太小,网络使网页一直处于刷新状态,很难打开,解决此类的问题最彻底的办法就是增加带宽,错峰访问虽然能够缓解一下问题,但并不能根本上解决问题。

2.服务器超负载

服务器的处理能力往往影响一个网站打开的快慢,当访问量过大的时候,带宽仅仅是影响网站打开速度的一方面,服务器的处理能力往往是最关键的因素。当访问量过大时,服务器由于配置或其它问题难以满足来自四面八方的访问,处理能力长期处于超负荷状态,尽管有着所谓7*24小时支持服务设计,但长期处于这种超负载状态,难免有不能“招架”的时候,所以服务器配置升级是应对长期访问量过大的最根本手段。

3.内存泄漏

内存泄漏是主内存分配了部分内存后而没有释放,逐渐耗尽内存资源,导致系统崩溃。它的后果甚至是会影响到以后内存的正常运行或使用内存损坏,它主要是指程序中间动态分配了内存,但是在程序结束时没有释放这部分内存,从而造成那一部分内存不可用的情况,重起计算机可以解决,但是也有可能再次发生内存泄露,内存泄露和硬件没有关系,它是由软件引起的。

而在一般情况下无法轻易被发现的其实它也是轻易不是出现的,它就好象你坐在一个升降机里所在是13楼而你还按下13楼的按扭一样,内存泄露只会在这样的情况下出现的,不过内存泄漏说还是会比一个人站在13楼还按要去13楼的按扭这样的情况要多的多,因为有时内存泄漏会时常发生在用户使用某些较大且较复杂的程序中。

解决的办法也只有使用一些软件来测试内存有没有这样泄露的问题了,不过要是隐性式的内存泄漏就不太好办了。要根据当前发生一些问题或是一些操作来判断是否发生内存泄漏的问题。

4.磁盘已满

磁盘已满也可能是导致系统无法运行的原因。一个合格的网络管理员会密切关注磁盘的使用情况,隔一段时间,就需要将磁盘上的一些负载转存到备份存储介质中(例如磁带)。

日志文件往往会很快使用光所有的磁盘空间,Web服务器的日志文件,SQL*Net的日志文件,JDBC日志文件,以及一些相应应用程序的的日志文件均占用大量磁盘空间,可以采取相应措施将日志文件保存在其它文件系统中,日志文件系统空间已满时Web服务器虽然也会被挂起,但是机器自身被挂起的几率已大大减低。

黑客、病毒不容小视

5.黑客的侵袭

一票难求 细数导致

黑客越来越多

现在攻击网站的方法越来越多,手段也越来越高,危害也比以前大了,很多人中了木马却还不知道,要想保护好网站站点的安全,那么就要保护好服务器端口的安全。

6.感染病毒

病毒程序往往使网站应用程序无法正常运行,这样站点往往会因为各种病毒的侵袭而遭受重创,现在虽然杀毒软件很多,但是还没有一种能够确保网站不被病毒感染的杀毒软件出现, 所以在日常维护中,管理员要严格遵守相关管理规定,遵守操作流程,使病毒受侵袭的可能性降到最低。

7.多线程死锁

多线程带来的性能改善是以降低可靠性为代价的,因为这样有可能产生线程死锁状况。线程死锁时,第一个线程等待第二个线程释放资源,而第二个线程又在等待第一个线程释放资源。简单理解为:如人行道上两个人迎面相遇,为了给对方让道,两人同时向一侧迈出一步,双方无法通过以同样的迈步方式堵住了对方的去路。假设这种情况一直持续下去,这样就不难理解为何会发生死锁现象了。

解决死锁方法都很麻烦,这是由于使线程产生这种问题是很具体的情况,而且往往有很高的负载。大多数软件测试并不能产生足够多的负载,所以不能够暴露全部线程错误。在每一种使用线程的语言中都存在线程死锁问题。由于使用Java进行线程编程比使用C容易,所以Java程序员中使用线程的人数更多,线程死锁也就越来越普遍了。可以在Java代码中增加同步关键字的使用,这样可以减少死锁,但这样做也会影响性能。如果负载过重,数据库内部也有可能发生死锁。

如果程序使用了永久锁,比如锁文件,而且程序结束时没有解除锁状态,则其他进程可能无法使用这种类型的锁,既不能上锁,也不能解除锁。这会进一步导致系统不能正常工作。这时必须手动地解锁。

8.数据库中的临时表不够用

许多数据库的临时表数目都是固定的,临时表即保留查询结果的内存区域。在临时表中的数据都被读取后,临时表便会被释放,但大量同时进行的查询可能耗尽数目固定的所有临时表。这时,其他的查询就需要列队等候,直到有临时表被释放时才能再继续运行。

此外,还存在一些其他问题:设置的表空间不够用、序号限制太低,这些都会导致表溢出错误。这些问题表明了一个好的DBA对用于生产的数据库设置和性能进行定期检查的重要性。而且,大多数数据库厂商也提供了监控和建模工具以帮助解决这些问题。

除去上面的常见的原因,还有许多因素也极有可能导致Web站点无法正常工作。如:C指针错误、相关性、设备驱动程序不兼容、硬件老化、无意间锁住了关键的表等。

官方微博/微信

每日头条、业界资讯、热点资讯、八卦爆料,全天跟踪微博播报。各种爆料、内幕、花边、资讯一网打尽。百万互联网粉丝互动参与,TechWeb官方微博期待您的关注。

↑扫描二维码

想在手机上看科技资讯和科技八卦吗?

想第一时间看独家爆料和深度报道吗?

请关注TechWeb官方微信公众帐号:

1.用手机扫左侧二维码;

2.在添加朋友里,搜索关注TechWeb。

手机游戏更多