0 0

并发丢失数据5

先简要说下代码的过程:并发时候的场景就相当与 产生了多个a对象,同时运行a的一个服务,A a =new A();  a.execute(); 类A 里面的变量都是局部变量,作用域在方法内,execute 方法内涉及到了数据库操作,调用别的类的方法,但是调用别的类中的方法的变量也都是局部的,作用域在方法范围内,不知道为啥会产生数据丢失的现象。有碰见过的同学或有能查出这问题的思路帮忙说下。谢谢。

具体的压力测试说明如下

:模拟复用器启动sim卡注册,查看数据库卡数据入库信息。

卡数据注册情况如下,复用器中的sim卡注册失败会重新注册,此处为并发下复用器第一次注册的情况。

1.1 1台复用器瞬间启动 ,需要入库1024,实际入库1024条。

2.110台复用器瞬间启动,需要入库2560条,实际入库2552条。

3.110台复用器间隔10秒启动,需要入库2560条,实际入库2560条。

 

4.1100台复用器间隔5秒启动,需要入库25600条,实际入库25481条。复用器启动过程就是经过另外系统处理将相关的数据写入数据库的过程,代码和上面说的原理一样。只是不明白为啥丢数据。

 

 

 

 

 


问题补充:这样吧,我把底层框架说下,底层是用mina2写的,通过接受客户端的协议,然后mina2从线程池拿一个线程去执行,业务,逻辑如下:根据协议号利用反射机制生成对象然后执行对象的方法,执行业务逻辑,整
参考代码如下
每次都是开启一个线程来执行
public void messageReceived(IoSession session, Object message)
throws Exception {
RbMessage tsMessage = (RbMessage) message;//通过底层传递过来的对象

        commManager.messageReceived(tsSession, tsMessage);//对对象的处理

}
}catch(Exception e){
LogFactory.getLog(LogUtil.system).error(e.getMessage());
}
}
commManager 里的基本逻辑如下:
DataParser dataParser = new DataParser(message.getContent(),message.getDataLen()); //解析数据
// 实例化处理类
action = getTSAction(dataParser.getType()); //根据反射生成对象

if(action==null){

return;
}
// 赋值
action.setType(dataParser.getType());
action.setVersion(dataParser.getVersion());
action.setDocument(dataParser.getDocument());
action.setFieldListNode(dataParser.getFieldListNode());
action.setResultsNode(dataParser.getResultsNode());
action.setRbMessage(message);

// 执行处理
action.execute(context, session); //执行业务逻辑,
我的qq是316642840 有兴趣的一起探讨下,多谢光临
2014年8月14日 23:25

3个答案 按时间排序 按投票排序

0 0

有些描述,没看懂。不过,并发这种东西,如果有bug,很难处理,因为很难发现问题。只能慢慢查找定位了!

2014年8月16日 22:57
0 0

并发时候的场景就相当与 产生了多个a对象,同时运行a的一个服务,A a =new A();  a.execute();

-------------------
上面这句话是啥意思呢?  同时运行a的服务,是指的execute方法吗? 那就是同时产生多个a对象并执行a的这个方法?   如果这样的话首先可以排除是多线程同步导致的问题。有可能是并发的时候丢了请求。

2014年8月15日 14:39
0 0

一 为并发线程捕获异常跟错误,
二 重点查看下数据库上的资源有咩有竞争,死锁退出的问题。

2014年8月15日 09:32

相关推荐

    Sqlserver大数据量插入速度慢或丢失数据的解决方法

    1. **并发控制不当**:多线程或多个进程同时插入数据时,如果没有适当的并发控制机制,可能会导致数据丢失。 2. **事务管理问题**:如果在事务未提交的情况下就发生异常或者中断,则可能导致部分数据未能成功写入...

    高并发前端数据采集器.zip

    在高并发场景下,数据采集器需要具备高效稳定的特点,能够快速响应并处理大量并发请求,避免数据丢失或延迟。 文件名“concurrent-server-master”暗示这可能是一个支持高并发的服务器端项目,可能采用了如Node.js...

    多核与并发数据结构-用于列车售票的可线性化并发数据结构.zip

    尤其是在像列车售票这样的高并发场景中,优化并发数据结构可以显著提升系统的性能和效率。本资料主要探讨了如何使用可线性化并发数据结构来解决这类问题。 可线性化是一种并发一致性模型,它保证了即使在多线程环境...

    高并发处理.大数据量

    高并发处理大数据量 在高并发处理大数据量的系统中,如何解决并发问题是非常重要的。例如,在订票系统中,某航班只有一张机票,但是有1万个人同时打开网站来订票,这时如何保证大家都能看到有票,而不可能一个人在...

    微博支付-高并发场景下数据一致性问题探究.pdf

    在高并发场景下,微博支付系统面临的主要挑战之一是数据一致性问题。这涉及到多个系统间的交互,包括前端用户界面、支付网关、后端数据库以及各种缓存服务,如MySQL、Redis等。在这个环境中,保证数据的一致性是至关...

    查询和并发

    在多用户环境下,数据的并发访问是不可避免的,如果不加以控制,可能会导致数据不一致和丢失更新等问题。在`hb_08_concurrencycontrol`中,你将了解到Hibernate提供了多种并发控制策略,如乐观锁和悲观锁。乐观锁...

    处理多用户更新数据并发问题

    当多个用户同时尝试修改同一数据时,如果没有适当的控制机制,可能会导致数据不一致、丢失更新或死锁等问题。以下是一些处理多用户更新数据并发问题的关键知识点: 1. **并发控制**:并发控制是数据库管理系统中的...

    Entity Framework 处理并发

    这可能会导致数据丢失,如果多个人同时更新同一记录。 Fixed 在写入数据时,执行并发检查。这是默认设置,用于处理乐观并发。 在 Entity Framework 中,通常通过在实体类的属性上添加 `ConcurrencyCheck` 特性来...

    高级数据库设计:事务处理、并发控制与数据安全.html

    深入探讨了高级数据库设计中的核心主题,包括事务处理、并发控制和数据安全。事务处理确保数据库操作的原子性、一致性、隔离性和持久性,通过事务日志和回滚机制来实现操作的可靠性。并发控制技术,如锁机制、乐观和...

    数据库并发控制,封锁,并发调度学习攻略

    1. **丢失修改**:当两个事务同时读取并修改同一数据时,后提交的事务可能会覆盖先提交事务的结果,导致先提交事务的修改丢失。 2. **不可重复读**:指的是在一个事务内多次读取同一数据时,由于其他事务对数据进行...

    redis百万并发访问数据库测试

    4. **Redis的持久化**:为防止数据丢失,Redis提供了RDB(快照)和AOF(Append Only File)两种持久化策略。RDB会在指定时间点生成数据快照,而AOF则记录每次写操作,确保数据安全。 5. **测试方法**:进行并发访问...

    数据库并发控制PPT

    并发控制的主要目的是防止多个事务在访问共享资源时产生不正确的数据状态,从而避免诸如丢失更新、脏读和不可重读等并发问题。 1. **数据库并发控制的含义** 并发控制是指在多用户环境下,当多个事务同时访问和...

    linux并发回音服务器与客户端

    TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,适合需要稳定、无丢失的数据传输场景。而UDP是无连接的,提供不可靠的服务,适用于对实时性要求高的应用。 2. **套接字编程**:服务器和客户端都需要...

    SQL并行更新时丢失数据实例

    然而,这种并行执行模式也可能带来数据一致性问题,如标题所提的“SQL并行更新时丢失数据实例”。本篇文章将深入探讨SQL并行更新的工作原理、可能的数据丢失原因以及如何解决这些问题。 首先,SQL并行更新是指...

    在ASP.NET 2.0中操作数据之二十一:实现开放式并发

    综上所述,*** 2.0通过提供内置的工具和方法,使得开发者能够有效地实现数据的开放式并发控制,从而允许多用户对数据进行并发操作,同时避免或减少数据冲突和数据丢失的风险。开发者需要根据应用的具体需求和数据...

    设计数据库的并发控制机制:确保数据一致性的策略

    当多个用户同时访问数据库时,如果没有适当的并发控制机制,可能会导致数据不一致、更新丢失或脏读等问题。本文将探讨如何设计有效的数据库并发控制机制。 数据库的并发控制是确保在多用户环境中数据库的完整性和...

    数据库的并发控制

    - **丢失更新**:当两个或多个事务同时更新同一数据项时,后一个事务的更新可能覆盖掉前一个事务的更改,导致前一个事务的更新丢失。 - **脏读**:一个事务读取了另一个未提交事务所修改的数据。如果第二个事务最终...

    《数据库原理》并发操作、串行调度

    并发操作可能会产生三类数据不一致性:丢失修改、不可重复读和读‘脏’数据。这些不一致性都是由于并发操作破坏了事务的隔离性所引起的。 三、封锁类型 封锁是指一个事务对某个数据对象加锁,取得对它一定的控制,...

    数据库并发控制sqlserver2000

    1. **丢失更新**:当两个或更多事务同时对同一数据进行修改时,可能导致其中一个事务的操作结果被另一个事务覆盖,从而造成数据的丢失。例如,在库存管理中,如果两个事务分别进行了入库和出库操作,且出库操作发生...

Global site tag (gtag.js) - Google Analytics