最近在做一个大数据的处理,从数据库中批量的查询出约10w条数据,对每一条数据进行处理后再save到另一张表里。暴露出几个问题总结一下:
1.apache服务器的超时重发。由于我们后端首先进的是apache服务器,通过mod_jk转发至应用服务器的。apache的workers.properties配置文件中有一个属性
#worker.localnode.socket_timeout=60
#worker.localnode.retries=1
其中socket_timeout配置是表示后端处理超时的时间,
retries是mod_jk向后端jboss重发的次数,retries=1标识不重发,期末线上没有配置默认为2.
如果后端代码处理时间超过1分钟,mod_jk会再次请求,相当于你的方法执行了2次。
可能带来的问题:
- 后台耗时的定时任务被执行2次
- 数据订正时出现诡异的问题。
- 生成、导出excel、zip时,出现java.net.SocketException: Broken pipe这些诡异的问题
2.大批量的数据循环插入可能导致数据库失去响应,取决于机器的配置。可能的解决方案:在循环中每隔n次插入Thread.sleep(200)。
3.可能的话,使用batchSave而不是save操作(前提是框架支持,如hibernate)。
4.在对大量数据进行处理尤其是生产环境的情况下,出于安全的考虑,一定要做好以下三点:
- 任何情况下要做好应急回滚方案,如果这次不能回滚,那会造成更大的影响。
- 在线下要尽可能的模拟线上情况,应该把数据全部导下来订正一遍,看是否会出现问题。
-
对线上订正时,程序订正必须要做足够的log记录,记录出错的、成功的记录。事后补救可以定位。
分享到:
相关推荐
在本文中,我们将深入探讨如何通过XML配置来解决Struts中的重复提交问题。 首先,理解重复提交的原因。在Web应用中,用户点击提交按钮后,如果网络延迟或刷新页面,同一个请求可能被发送多次。Struts框架默认情况下...
这种情况下,如果没有采取适当的措施来防止重复提交,可能会引起数据冗余、资源浪费甚至业务逻辑错误等问题。因此,在实际项目开发中,防止重复提交是一项非常重要的工作。 #### 防止重复提交的方法 1. **前端控制*...
在Web应用程序中,特别是在使用Java进行后端开发时,重复提交问题是常见的技术挑战之一。例如,在用户提交表单后,由于网络延迟或其他原因导致用户多次点击提交按钮或浏览器缓存导致页面刷新时,可能会出现数据的...
本文将详细介绍如何在Struts框架中利用Token机制来避免重复提交问题。 #### 一、什么是重复提交问题? 重复提交问题通常发生在用户点击“提交”按钮后网络延迟导致页面加载缓慢的情况下,用户可能会多次点击提交...
### 利用Token机制解决重复提交问题 在Web应用开发中,防止表单的重复提交是一个常见的需求。本文将深入探讨如何通过Token机制来解决这一问题,并提供详细的实现步骤及原理解析。 #### 一、Token机制简介 Token...
在实际应用中,文件上传和下载以及防止表单重复提交是两个常见的需求,同时也是开发者必须掌握的重要技能。 1. **文件上传** 文件上传功能在Struts2中通过`Struts2`提供的插件来实现,主要依赖于`Apache Commons ...
在实际开发中,Struts框架的一个常见问题就是“重复提交”。本文将深入探讨这个问题,并提供解决方案。 一、什么是重复提交? 在Web应用中,用户可能会意外地多次点击提交按钮,导致服务器端接收到多个相同请求,这...
首先,我们来了解一下什么是表单重复提交问题。当用户填写并提交一个表单后,如果网络延迟或者用户误操作,可能会导致同一份表单数据被多次提交。这对于诸如转账、下单等业务来说,可能会带来严重后果。 Struts2的...
本节主要关注Struts在处理两个关键问题上的高级应用:防止重复提交和文件上传组件的使用。 **一、解决重复提交** 在Web应用程序中,重复提交是一个常见的问题,可能导致数据不一致或服务过载。Struts通过几种策略...
通过以上方法,Struts的Token机制能有效防止Web应用中的重复提交问题,确保数据的准确性和一致性。不过,随着技术的发展,现代框架如Spring Boot等提供了更先进的解决方案,例如CSRF(跨站请求伪造)保护,可以考虑...
通过以上步骤,我们可以有效地防止Struts2应用中的表单重复提交问题。这个机制不仅提高了用户体验,也避免了因重复提交导致的数据不一致。在实际项目中,根据具体需求,可能还需要结合其他验证机制,如JavaScript的...
在Web应用开发过程中,特别是在使用MVC框架如Apache Struts进行开发时,防止表单重复提交是一个重要的安全措施。表单重复提交通常发生在用户点击“提交”按钮后,由于网络延迟或其他原因没有及时收到反馈,导致用户...
当用户提交表单时,服务器会检查session中的token与表单提交的token是否匹配,如果匹配并且是首次提交,那么执行业务逻辑,否则视为重复提交并拒绝处理。 具体实现步骤如下: 1. **配置拦截器**:在struts.xml配置...
但需要注意的是,Token机制并不能解决所有类型的重复提交问题,例如异步请求(Ajax)的重复提交。在这种情况下,通常需要在客户端进行额外的控制,比如使用JavaScript禁用提交按钮。 总的来说,理解并正确使用...
5. **拒绝重复提交**: 如果用户尝试重复提交同一表单,由于客户端携带的Token已与服务器上的Token不匹配,因此服务器会拒绝该请求。 #### 四、实现细节 - **生成Token**: - 服务器通过`TokenProcessor`类的`...
在Web开发中,表单重复提交是一个常见的问题,可能导致数据不一致或者服务端处理压力增大。为了防止这种情况,开发者通常会采取一些策略,如在Struts2中使用Token机制。 在Struts2中防止表单重复提交的过程主要包括...
在Web开发中,防止重复提交是一项重要的任务,因为它可能导致数据的不一致性或处理逻辑的错误执行。Struts2提供了几种策略来防止表单的重复提交,确保请求的唯一性和事务的一致性。 一、令牌(Token)机制 Struts2...
只需要在Struts配置文件中启用这个拦截器,并指定对应的错误页面,就可以自动处理重复提交的问题。 例如,在struts.xml配置文件中: ```xml <interceptor name="token" class="org.apache.struts2.interceptor....