我有一个Grails应用程序,它从.csv获取输入,并为每一行进行SOAP调用,以将数据添加到外部系统。使用较小的数据集,例如200条记录,该过程可以正常工作。但是,如果数据集较大,则该过程将一直没有明显问题,然后第二个“实例”将启动并与初始实例并行运行。这导致我在外部系统中有重复的条目。我不确定重复发生的确切阈值是什么。
过去,我在ColdFusion应用程序中遇到了几乎相同的问题。该应用程序将通过Web服务调用获取xml输入,遍历xml中的电子邮件收件人,并发送电子邮件。如果文件中有500个收件人,则电子邮件将毫无问题地发送出去。但是,如果文件中有10000个收件人,则有时会发生相同的“重复”问题,其中进程将运行并且电子邮件正在发送,然后第二个“实例”将在列表的开头启动并开始发送重复电子邮件。
由于我已经在两个不同的环境中观察到了问题,这两个环境都是在他们的基础上共享java,我认为这个问题是在我的java环境调优中的某个地方。有人能指出我正确的方向,我应该在环境中看到什么来解决这个问题?或者,如果您认为问题出在环境以外的其他地方,我还应该关注什么?我知道代码只执行你告诉它要做的事情,但我100%肯定代码中没有任何东西告诉进程在中间进程中第二次启动。如果代码存在问题,那么代码必须类似于导致内存泄漏的代码或类似内容。