大数据时遇到的问题

  十月一后正式接管金币服务,到最后基本使之稳定用了两个月。当时交易量平均每天5万条。

  接收的算是一个不太好的摊子,十月一期间还出现了某几个StandaloneDealer服务挂了的现象,并且基本每天都一堆错误log,但是金币交易的整个流程我认为是没有问题的。 所以整个解决过程基本上围绕如何让错误log消失,log是程序员catch时捕获的。 

  首先,解决的是匿名用户重复创建的问题。当业务部门在短时间发送多个同一匿名用户的交易请求时,Dealer会先去数据库匿名表检查不存在,然后创建,EF用的是批量提交,所以在未提交时,DB检查不存在,就是在缓存中创建多个相同的匿名用户。解决方式:当一有匿名账户创建,就立即提交缓存。这是一个折衷方案,正式用户的创建是放在CBC前台创建时调用,而对于匿名用户也应该保持统一。 

  公司租的是电信服务器,最多支持内存16G,所以只能升级到此。数据库做了镜像,支持故障转移,查询时,只需在上面做快照,基于快照查询不影响主库。 建立读写分离,把之前耗时的job都转移到读库。 增加控制入队开关,这样可以安全关闭金币交易,不用把整个网站停掉。 之前控制缓存提交时间和数量在redis上,实际上是所有dealer公用,逻辑错误。后改为在内存中单独控制。

   当查找账户时,先从ObjectContext缓存中查,没有再查DB,(后期,又增加了多次尝试从DB加载的机制,因为在DB繁忙时,偶尔会有超时现象)。

  发现EF有个问题,当DB的值发生变化后,经过一次查询,Context并不更新,还是老的。 当数据库发生震荡,譬如索引重建,会有重复插入¬PartialTrade的现象。这不是必现的,所以解决这个问题时,费了很大劲。开始时,测试环境用loadrunner总是无法复现,而正式环境却不时冒出来。之前怀疑是缓存中记录之间有重复的,但经过事实证明,这个想法是错误的。然后,猜是缓存和DB之间有重复,(DB insert提交成功后,cacah 里的数据对象状态并没有从Added 变为Unchanged,导致二次提交)在经过一次偶然机会错误复现后(PartialTrade 表做碎片整理时),终于证实并解决了。 

  到此为止,已经没有错误log,没有丢失数据或交易的现象。但是,dealer的内存随时间会变大,个别队列会有积累上千条未处理的现象。后用.NET Memory Profiler分析,发现是ObjectContext未释放。之后,实现了一个定期释放的机制。 

  在这期间,还做了个监控系统,一旦有错误log,就发消息到手机上,这个晚上在家也可以及时解决,如果是严重错误,会暂停这个队列的请求。

  至此,金币交易总算稳定了。用LoadRunner进行压力测试时,每个队列每秒大概能处理是十几笔交易。
时间: 2024-10-27 08:05:57

大数据时遇到的问题的相关文章

大数据时代征信业发展探析

近年来,随着互联网技术的发展,大数据越来越受到关注,其应用逐步渗透至多个行业,开启了全新的数据时代.数据是征信业务开展的基础资料,征信活动主要是围绕数据进行采集.整理.保存.加工,并最终向信息使用者提供.大数据不仅为征信业发展提供了极为丰富的数据信息资源,也改变了征信产品设计和生产理念,成为了未来征信业发展最重要的基石.我国征信业发展尚处于起步阶段,在大数据时代存在征信法律制度和业务规则不够完善.征信机构数据处理能力有待提高等问题.未来征信业面临的机遇和挑战并存,研究大数据时代征信业的发展具有重

话题讨论&征文--谈论大数据时我们在谈什么 获奖名单发布

从社会发展趋势的角度,非常明显大数据会是眼下肉眼可及的视野范围里能看到的最大趋势之中的一个.从传统IT 业到互联网.互联网到移动互联网,从以智能手机和Pad 为主要终端载体的移动互联网到可穿戴设备的移动互联网,然后再到万物互联的物联网,这一定是不可违抗的发展规律和前进方向.伴随着这个趋势必定有越来越多.形态越来越丰富的超量数据不断产生,而大数据明显是由此衍生出来的明白且必定的发展趋势. 讨论话题:谈论大数据时我们在谈什么 话题提示: 1   您能接触到的大数据有哪些? 2   您最想了解的大数据

谈论大数据时我们在谈什么

从社会发展趋势的角度,很明显大数据会是目前肉眼可及的视野范围里能看到的最大趋势之一.从传统IT 业到互联网.互联网到移动互联网,从以智能手机和Pad 为主要终端载体的移动互联网到可穿戴设备的移动互联网,然后再到万物互联的物联网,这一定是不可违抗的发展规律和前进方向.伴随着这个趋势必然有越来越多.形态越来越丰富的超量数据不断产生,而大数据明显是由此衍生出来的明确且必然的发展趋势. 讨论话题:谈论大数据时我们在谈什么 话题提示: 1   您能接触到的大数据有哪些? 2   您最想了解的大数据架构与算

大数据时的运算效率问题

第一步,優化字段 原始數據導入數據時,對所有字段進行優化,儘可能地爲每個字段選用最小的字段類型    字符型字段,一般導入時默認會是nvarchar型,改爲varchar型節省一半空間.    數值型字段,如果是整數,如果最大可能數小於255,改爲tinyiny,如果最大可能數小於32768,改爲smallint,如果長度小於9位,改爲int.如果帶小數點,精度要求不是非常高的話,改爲real.    日期型字段,如果只需要精確到天的話,改爲date型    這樣經過優化之後,該數據所佔的文件尺

2014.2.23加载大数据时不闪烁的listView

namespace 相册处理 { //将ListView重载为此新类,解决加载过程中闪烁的问题 //在designer.cs中改写: //private ListViewNeverFlickering listView1; //this.listView1 = new ListViewNeverFlickering(); internal class ListViewNeverFlickering : System.Windows.Forms.ListView { public ListView

利用 StartLoadingStatus 和 FinishLoadingStatus 读取数据特别是大数据时增加渐隐渐显等待特效 - Ehlib学习(三)

代码很简单: DBGrideh.StartLoadingStatus(' Loading ... '); Sleep(500); DBGrideh.FinishLoadingStatus; 做下变动: DBGrideh.StartLoadingStatus(' Loading ... ',1000); //1000表示显示的速度 Sleep(500); DBGrideh.FinishLoadingStatus(1000); //1000表示显示的速度,此处的单位不是毫秒 上一段代码中发现的数值1

大数据日知录:架构与算法

大数据丛书 大数据日知录:架构与算法(大数据领域专家力作,专注大数据架构和算法,全面梳理大数据相关技术) 张俊林 著   ISBN 978-7-121-24153-6 2014年9月出版 定价:69.00元 404页 16开 编辑推荐 这是一本心血之作,历时3年,质量上乘. 从架构与算法的角度,比较全面地分门别类梳理了大数据相关技术. 本书内容紧跟技术前沿,讲解深入浅出,适合大数据领域所有技术人员. 书中还列有作者优选的高质量文献,能为读者节省选择的时间,绝对值得一读. 内容提要 大数据是当前最

Sqlite大数据写入性能优化

众所周知,Sqlite是一个轻量级的数据库,仅仅需要一个exe文件就能运行起来.在处理本地数据上,我比较喜欢选择使用它,不仅是因为他与sql server有着比较相近的语法,还因为它不需要安装,仅需要通过命令行就能启动了,而且他在处理大数据时,性能比sql server好很多,好吧这里不继续争论性能优劣. 首先,这次的问题是在一次项目中遇到的,项目要求能大量导入数据,而且由于项目性质(轻便,本地化),所以我选择sqlite来存放数据. 第一版代码: 1 StringBuilder sql = n

中科院 | 大数据的力量来自“大成智慧”信息时代大数据的再认识

文章出处:http://www.thebigdata.cn/YeJieDongTai/29119.html 大数据已成为媒体与大众关注的新技术,大数据的应用也预示着信息时代将进入一个新阶段,但人们对大数据的认识有一个不断加深的过程.首先从"信息时代新阶段".数据文化和认识论的高度阐述了对大数据的理解;接着通过对驱动效益和大成智慧的解释,探讨了如何正确认识大数据的价值和效益,并从复杂性的角度分析了大数据研究和应用面临的挑战;最后对发展大数据应避免的误区提出几点看法. 1 大数据兴起预示&